0% found this document useful (0 votes)
14 views17 pages

Effective EDA with Python and Ydata Profiling

Uploaded by

14.yuvrajmaskey
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views17 pages

Effective EDA with Python and Ydata Profiling

Uploaded by

14.yuvrajmaskey
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Exploratory Data Analysis

(Python)
Introduction
Exploratory Data Analysis (EDA) is the single most important task to
conduct at the beginning of every data science project.

In essence, it involves thoroughly examining and characterizing your


data in order to find its underlying characteristics,
possible anomalies, and hidden patterns and relationships.

This understanding of your data is what will ultimately guide through


the following steps of you machine learning pipeline, from data
preprocessing to model building and analysis of results.

The process of EDA fundamentally comprises three main tasks:

●​ Step 1: Dataset Overview and Descriptive Statistics

●​ Step 2: Feature Assessment and Visualization, and

●​ Step 3: Data Quality Evaluation

As you may have guessed, each of these tasks may entail a quite
comprehensive amount of analyses, which will easily have you slicing,
printing, and plotting your pandas dataframes like a madman.

Unless you pick the right tool for the job.

In this article, we’ll dive into each step of an effective EDA


process, and discuss why you should turn ydata-profiling into your
one-stop shop to master it.
To demonstrate best practices and investigate insights, we’ll be
using the Adult Census Income Dataset, freely available on Kaggle or
UCI Repository (License: CC0: Public Domain).

Step 1: Data Overview an Descriptive Statistics


When we first get our hands on an unknown dataset, there is an
automatic thought that pops up right away: What am I working with?

We need to have a deep understanding of our data to handle it


efficiently in future machine learning tasks

As a rule of thumb, we traditionally start by characterizing the data


relatively to the number of observations, number and types of features,
overall missing rate, and percentage of duplicate observations.

With some pandas manipulation and the right cheatsheet, we could


eventually print out the above information with some short snippets of
code:
Dataset Overview: Adult Census Dataset. Number of observations, features, feature
types, duplicated rows, and missing values. Snippet by Author.

All in all, the output format is not ideal… If you’re familiar with pandas,
you’ll also know the standard modus operandi of starting an EDA
process — [Link]():

Adult Dataset: Main statistics presented with [Link](). Image by Author.


This however, only considers numeric features. We could use
a [Link](include='object') to print out some additional
information on categorical features (count, unique, mode,
frequency), but a simple check of existing categories would involve
something a little more verbose:
Dataset Overview: Adult Census Dataset. Printing the existing categories and respective
frequencies for each categorical feature in data. Snippet by Author.

However, we can do this — and guess what, all of the subsequent EDA
tasks! — in a single line of code, using ydata-profiling:
Profiling Report of the Adult Census Dataset, using ydata-profiling. Snippet by Author.

The above code generates a complete profiling report of the


data, which we can use to further move our EDA process, without the
need to write any more code!

We’ll go through the various sections of the report in the following


sections. In what concerns the overall characteristics of the data,
all the information we were looking for is included in
the Overview section:

ydata-profiling: Data Profiling Report — Dataset Overview. Image by Author.

We can see that our dataset comprises 15 features and 32561


observations, with 23 duplicate records, and an overall missing
rate of 0.9%.
Additionally, the dataset has been correctly identified as a tabular
dataset, and rather heterogeneous, presenting both numerical and
categorical features. For time-series data, which has time
dependency and presents different types of
patterns, ydata-profiling would incorporate other statistics and analysis
in the report.

We can further inspect the raw data and existing duplicate


records to have an overall understanding of the features, before going
into more complex analysis:
Press enter or click to view image in full size

ydata-profiling: Data Profiling Report — Sample preview. Image by Author.

From the brief sample preview of the data sample, we can see right
away that although the dataset has a low percentage of missing data
overall, some features might be affected by it more than others. We
can also identify a rather considerable number of categories for
some features, and 0-valued features (or at least with a significant
amount of 0’s).
Press enter or click to view image in full size
ydata-profiling: Data Profiling Report — Duplicate rows preview. Image by Author.

Regarding the duplicate rows, it would not be strange to find


“repeated” observations given that most features represent categories
where several people might “fit in” simultaneously.

Yet, perhaps a “data smell” could be that these observations share the
same age values (which is plausible) and the exact same fnlwgt which,
considering the presented values, seems harder to believe. So further
analysis would be required, but we should most likely drop these
duplicates later on.

Overall, the data overview might be a simple analysis, but


one extremely impactful, as it will help us define the upcoming tasks
in our pipeline.

Step 2: Feature Assessment and Visualization


After having a peek at the overall data descriptors, we need to zoom in
on our dataset’s features, in order to get some insights on their
individual properties — Univariate Analysis — as well their
interactions and relationships — Multivariate Analysis.
Both tasks rely heavily on investigating adequate statistics and
visualizations, which need to be to tailored to the type of
feature at hand (e.g., numeric, categorical), and the behavior we’re
looking to dissect (e.g., interactions, correlations).

Let’s take a look at best practices for each task.

Univariate Analysis

Analyzing the individual characteristics of each feature is crucial as it will


help us decide on their relevance for the analysis and the type of
data preparation they may require to achieve optimal results.

For instance, we may find values that are extremely out of range and may
refer to inconsistencies or outliers. We may need
to standardize numerical data or perform a one-hot encoding of
categorical features, depending on the number of existing categories.
Or we may have to perform additional data preparation to handle
numeric features that are shifted or skewed, if the machine learning
algorithm we intend to use expects a particular distribution (normally
Gaussian).

Best practices therefore call for the thorough investigation of individual


properties such as descriptive statistics and data distribution.

These will highlight the need for subsequent tasks of outlier


removal, standardization, label encoding, data imputation,
data augmentation, and other types of preprocessing.

Let’s investigate race and [Link] in more detail. What can we


immediately spot?
Press enter or click to view image in full size
Profiling Report (race and [Link]).

The assessment of [Link] is straightforward:​


Given the data distribution, we might question if the feature adds any
value to our analysis, as 91.7% of values are “0”.

Analyzing race is slightly more complex:​


There’s a clear underrepresentation of races other than White. This
brings two main issues to mind:

●​ One is the general tendency of machine learning algorithms


to overlook less represented concepts, known as the
problem of small disjuncts, that leads to reduced learning
performance;

●​ The other is somewhat derivative of this issue: as we’re


dealing with a sensitive feature, this “overlooking tendency”
may have consequences that directly relate
to bias and fairness issues. Something that we definitely
don’t want to creep into our models.
Taking this into account, maybe we should consider performing data
augmentation conditioned on the underrepresented categories, as well
as considering fairness-aware metrics for model evaluation, to
check for any discrepancies in performance that relate to race values.

We will further detail on other data characteristics that need


to be addressed when we discuss data quality best practices
(Step 3). This example just goes to show how much insights we can take
just by assessing each individual feature’s properties.

Finally, note how, as previously mentioned, different feature


types call for different statistics and visualization strategies:

●​ Numeric features most often comprise information


regarding mean, standard deviation, skewness, kurtosis, and
other quantile statistics, and are best represented using
histogram plots;

●​ Categorical features are usually described using the


mode and frequency tables, and represented using bar plots
for category analysis.
Profiling Report. Presented statistics and visualizations are adjusted to each feature
type.

Such a detailed analysis would be cumbersome to carry out with general


pandas manipulation, but fortunately ydata-profiling has all of this
functionality built into the ProfileReport for our convenience: no
extra lines of code were added to the snippet!

Multivariate Analysis

For Multivariate Analysis, best practices focus mainly on two strategies:


analyzing the interactions between features, and analyzing
their correlations.

Analyzing Interactions

Interactions let us visually explore how each pair of features


behaves, i.e., how the values of one feature relate to the values of the
other.

For instance, they may exhibit positive or negative relationships,


depending on whether the increase of one’s values is associated with an
increase or decrease of the values of the other, respectively.
Profiling Report — Interactions.

Taking the interaction between age and [Link] an example,


we can see that the great majority of the working force works a standard
of 40 hours. However, there are some “busy bees” that work past that (up
until 60 or even 65 hours) between the ages of 30 and 45. People in their
20’s are less likely to overwork, and may have a more light work schedule
on some weeks.

Analyzing Correlations

Similarly to interactions, correlations let us analyze the


relationship between features. Correlations, however, “put a value” on
it, so that it is easier for us to determine the “strength” of that
relationship.
This “strength” is measured by correlation coefficients and can be
analyzed either numerically (e.g., inspecting a correlation matrix) or
with a heatmap, that uses color and shading to visually highlight
interesting patterns:
Press enter or click to view image in full size

Profiling Report — Heatmap and Correlation Matrix.

Regarding our dataset, notice how the correlation


between education and [Link] stands out. In fact, they hold the
same information, and [Link] is just a binning of
the education values.

Other pattern that catches the eye is the the correlation


between sex and relationship although again not very informative:
looking at the values of both features, we would realize that these
features are most likely related because male and female will correspond
to husband and wife, respectively.

These type of redundancies may be checked to see whether we


may remove some of these features from the analysis
([Link] is also related
to relationship and sex; [Link] and race for instance, among
others).
Profiling Report — Correlations.

However, there are other correlations that stand out and could
be interesting for the purpose of our analysis.

For instance, the correlation betweensex and occupation,


or sex and [Link].

Finally, the correlations between income and the remaining


features are truly informative, specially in case we’re trying to
map out a classification problem. Knowing what are the most
correlated features to our target class helps us identify the most
discriminative features and well as find possible data leakers that may
affect our model.
From the heatmap, seems that [Link] or relationship are
amongst the most important predictors, while fnlwgt for instance, does
not seem to have a great impact on the outcome.

Similarly to data descriptors and visualizations, interactions


and correlations also need to attend to the types of features at
hand.

In other words, different combinations will be measured with different


correlation coefficients. By default, ydata-profiling runs correlations
on auto, which means that:

●​ Numeric versus Numeric correlations are measured


using Spearman’s rank correlation coefficient;

●​ Categorical versus Categorical correlations are


measured using Cramer’s V;

●​ Numeric versus Categorical correlations also use


Cramer’s V, where the numeric feature is first discretized;

And if you want to check other correlation coefficients (e.g.,


Pearson’s, Kendall’s, Phi) you can easily configure the report’s
parameters.

Step 3: Data Quality Evaluation


As we navigate towards a data-centric paradigm of AI development,
being on top of the possible complicating factors that arise in our
data is essential.

With “complicating factors”, we refer to errors that may occurs during


the data collection of processing, or data intrinsic characteristics that
are simply a reflection of the nature of the data.
These include missing data, imbalanced data, constant values,
duplicates, highly correlated or redundant features, noisy data, among
others.

Data Quality Issues: Errors and Data Intrinsic Charcateristics.

Finding these data quality issues at the beginning of a project (and


monitoring them continuously during development) is critical.

If they are not identified and addressed prior to the model


building stage, they can jeopardize the whole ML pipeline and
the subsequent analyses and conclusions that may derive from
it.

Without an automated process, the ability to identify and address these


issues would be left entirely to the personal experience and expertise of
the person conducting the EDA analysis, which is obvious not ideal. Plus,
what a weight to have on one’s shoulders, especially considering
high-dimensional datasets. Incoming nightmare alert!

This is one of the most highly appreciated features of ydata-profiling,


the automatic generation of data quality alerts:
ydata-profiling: Profiling Report — Data Quality Alerts. Image by Author.

The profile outputs at least 5 different types of data quality


issues, namely duplicates, high correlation, imbalance, missing,
and zeros.

Indeed, we had already identified some of these before, as we went


through step 2: race is a highly imbalanced feature and [Link] is
predominantly populated by 0’s. We’ve also seen the tight correlation
between education and [Link], and relationship and sex.

Analyzing Missing Data Patterns

Among the comprehensive scope of alerts considered, ydata-profiling is


especially helpful in analyzing missing data patterns.

Since missing data is a very common problem in real-world domains and


may compromise the application of some classifiers altogether or
severely bias their predictions, another best practice is to carefully
analyze the missing data percentage and behavior that our features
may display:
Press enter or click to view image in full size
ydata-profiling: Profiling Report — Analyzing Missing Values. Screencast by Author.

From the data alerts section, we already knew


that workclass, occupation, and [Link] had absent
observations. The heatmap further tells us that there is a direct
relationship with the missing pattern in occupation and workclass:
when there’s a missing value in one feature, the other will also be
missing.

Key Insight: Data Profiling goes beyond EDA!

So far, we’ve been discussing the tasks that make up a thorough EDA
process and how the assessment of data quality issues and
characteristics — a process we can refer to as Data Profiling —
is definitely a best practice.

Yet, it is important do clarify that data profiling goes beyond


EDA. Whereas we generally define EDA as the exploratory, interactive
step before developing any type of data pipeline, data profiling is an
iterative process that should occur at every step of data
preprocessing and model building.
Conclusions
An efficient EDA lays the foundation of a successful machine
learning pipeline.

It’s like running a diagnosis on your data, learning everything you need
to know about what it entails — its properties, relationships, issues — so
that you can later address them in the best way possible.

It’s also the start of our inspiration phase: it’s from EDA that
questions and hypotheses start arising, and analysis are
planned to validate or reject them along the way.

Common questions

Powered by AI

The three main tasks of Exploratory Data Analysis (EDA) are: Step 1: Dataset Overview and Descriptive Statistics, Step 2: Feature Assessment and Visualization, and Step 3: Data Quality Evaluation. These tasks collectively contribute to understanding a dataset by providing a comprehensive examination of its characteristics, identifying potential anomalies and patterns, and offering insights necessary for data preprocessing and model building. The Dataset Overview provides fundamental statistics and a general understanding of the data structure . Feature Assessment allows for both univariate and multivariate analysis, offering insights into individual feature distribution and interactions . Data Quality Evaluation identifies errors and intrinsic characteristics that may complicate further analysis or affect model performance .

ydata-profiling plays a significant role in the EDA process by automating the generation of comprehensive data profiling reports, which assists in conducting a thorough EDA without extensive manual coding. It provides a complete overview of the dataset, identifies feature distributions, relationships, outliers, and potential data quality issues. It simplifies tasks like visualizing interactions and correlations, assessing data quality alerts (duplicates, missing data, etc.), and supports profiling different feature types with appropriate statistics and visualizations . The tool's ability to automate these complex tasks allows data scientists to focus more on interpreting results and less on writing repetitive code, increasing efficiency and accuracy in EDA.

The document suggests that when handling features with a large number of zero values, such as the capital.gain feature in the Adult Census Dataset, it's important to evaluate whether these features add any value to the analysis. Since 91.7% of values in capital.gain are '0', its contribution to the model could be minimal, and one might consider either transforming the feature, focusing on non-zero values, or potentially removing it if it doesn't improve the predictive power or insights of the model . This assessment guides decisions in data pre-processing to optimize features for modeling.

Data profiling is described as an iterative process, meaning it should not only occur during the initial EDA phase but be continuously engaged throughout the data preprocessing and model building stages. Its importance lies in consistently identifying and addressing data quality issues that may emerge or evolve at different stages. This ongoing process ensures that the dataset remains accurate, clean, and ready for reliable analysis and modeling . Continuing data profiling allows one to adapt to new insights, maintain the integrity of the analysis, optimize feature selection and transformations, and minimize risks associated with data anomalies, ultimately supporting robust model performances.

Data quality alerts in ydata-profiling contribute to effective data analysis by automatically identifying and signaling potential data issues that could impact the results if left unaddressed. These alerts allow analysts to proactively deal with problems such as missing data, imbalances, duplicates, and high correlations before moving to model development. The document specifies five types of alerts generated: duplicates, high correlation, imbalance, missing values, and zeros. For instance, it highlights missing observations in critical features like workclass and occupation, as well as redundancy between certain correlated features, facilitating efficient and targeted interventions to clean and preprocess data . This enhances model accuracy and reliability.

The document recommends using specific visualization strategies tailored to feature types during EDA. For numerical feature distributions, best practices include using histogram plots to represent information such as the mean, standard deviation, skewness, and kurtosis. For categorical features, bar plots are advised for analyzing category frequencies. These visualizations help discern patterns and distributions that may inform preprocessing decisions like normalization for numerical features and encoding for categorical ones . Moreover, effectively visualizing these aspects empowers analysts to spot outliers, distribution anomalies, and necessary transformations needed for data modeling, enhancing the comprehensiveness of EDA.

Interactions and correlations between features inform data preprocessing by highlighting how features relate and impact one another, which can affect model outcome and decisions on feature suitability. The document recommends analyzing interactions to visualize how values of different features relate, assessing whether they show positive or negative relationships. Correlations are further quantified using correlation coefficients to determine relationship strength. The document suggests inspecting correlation matrices and heatmaps to identify redundant features (e.g., education and education.num) and the need to possibly remove or modify features that do not contribute valuable insights . Analyzing these relationships can uncover data leakers or redundant data, guiding feature selection.

From the Adult Census Dataset, insights include issues such as the underrepresentation of certain races, a significant percentage of '0' values in the capital.gain feature, and redundant features with high correlation like education and education.num. These insights highlight potential bias in the data and the need for careful consideration of fairness in modeling, as well as decisions on handling features that may contribute little value to modeling tasks. Addressing gender or race underrepresentation may involve data augmentation or adjusting model metrics to ensure fairness. Recognizing redundant features affects feature selection, and understanding predominant '0' values informs decisions on feature retention or transformation . These insights significantly shape feature engineering, model choices, and evaluation criteria.

Univariate analysis is crucial during EDA because it helps to understand the individual characteristics of each feature, which informs their relevance and the necessary data preparation actions required for optimal analysis. This analysis can reveal outliers, inconsistencies, and distribution patterns such as skewness, indicating the need for tasks like outlier removal, standardization, and encoding of categorical features. For example, if a feature is heavily skewed, it might require transformation to meet the assumptions of a machine learning algorithm that expects a Gaussian distribution . Identifying such issues early guides the selection of preprocessing techniques crucial for enhancing model accuracy.

If data quality issues are not addressed early in the EDA process, complications can arise that may jeopardize the model building and analysis phases. For instance, issues like missing data, duplicates, and highly correlated features can lead to biased models, inaccurate predictions, or even failure of the machine learning pipeline. The document identifies several data quality issues in the Adult Census Dataset, such as missing data in the workclass and occupation features, duplication of records, high correlation between specific features like education and education.num, and skewed distributions in features like capital.gain . Early identification and correction of these issues is crucial to ensure the reliability and interpretability of the results during subsequent stages.

You might also like