Exploratory Data Analysis and Visualization
Every model, dashboard, and data-driven decision inherits the problems of the data underneath it. Duplicated rows inflate counts. A "missing" value encoded as zero distorts averages. A column that was only filled in after the outcome happened makes a model look brilliant in testing and useless in production. Exploratory data analysis (EDA) is the disciplined first look at a dataset — its structure, quality, distributions, and relationships — that catches these problems and shapes the questions worth asking before anyone builds on it.
Good EDA is not an endless series of charts. It is a short, structured investigation with written conclusions: what the data contains, what can be trusted, what needs cleaning, and what patterns deserve deeper analysis.
TL;DR
- Start with the question and the data's provenance: who collected it, how, and what each row represents.
- Profile shape, types, ranges, and uniqueness; check for duplicates and impossible values.
- Study missingness — how much, where, and why — because the reason it is missing matters.
- Look at distributions and outliers before summarizing with averages; many real-world variables are skewed.
- Explore relationships carefully: correlation is not causation, and summary statistics can hide very different shapes.
- Check for leakage, then document findings, decisions, and open questions in a reproducible notebook or report.
Quick Example
A first pass over an orders dataset with pandas and Matplotlib:
Each line answers a question that changes what comes next: are IDs unique, which fields are unreliable, how skewed are totals, and is there seasonality or a sudden break in the series.
Core Concepts
Questions and Provenance
Before computing anything, write down the question and what you know about the data: the unit of observation (an order, a user-day, a session), the time range, how it was collected, known incidents or schema changes, and who owns it. Many surprising patterns turn out to be collection artifacts — a tracking bug, a migration, a filter in the export.
Profiling and Data Quality
Automated profiling tools can produce a quick overview, but read the output critically. See Data Quality Management.
Missingness
Measure the share of missing values per column and per segment, then ask why:
Missing values sometimes hide as empty strings, zeros, or placeholder dates — check for those explicitly.
Distributions and Outliers
Use histograms, box plots, and empirical cumulative distribution plots (ECDFs) to see shape. Revenue, latency, and counts are often right-skewed: medians and percentiles describe them better than means, and log scales reveal structure. Investigate outliers before removing them — they may be errors, fraud, or the most important customers. Robust rules (interquartile range, median absolute deviation) work better than standard deviations on skewed data.
Relationships
- Scatter plots reveal shape; correlation coefficients summarize only linear (Pearson) or monotonic (Spearman) association.
- Anscombe's quartet shows datasets with identical summary statistics and completely different patterns — always plot.
- Confounding and Simpson's paradox: a trend can reverse when data is split by a third variable, such as region or customer type.
- Categorical comparisons: group by segment and compare distributions, not just means.
Time
For time-indexed data, look for trend, seasonality (weekly, yearly), level shifts (often from product or tracking changes), and gaps. Plot at several granularities. See pandas Time Series.
Leakage Checks
Before modeling, ask whether each feature would be known at prediction time. Fields populated after the outcome, IDs that encode time, and aggregates computed over the full dataset leak information. See Data Leakage and Validation Splits and Feature Engineering.
Choosing Honest Charts
Label axes with units, start bar charts at zero, use log scales for wide ranges (and say so), avoid dual y-axes and 3D effects, and use colorblind-safe palettes with redundant encodings such as line styles or markers. See Matplotlib.
Tools
Best Practices
Write Conclusions, Not Just Charts
End each exploration with a short summary: data issues found, decisions made (exclusions, imputation), and questions for data owners.
Keep It Reproducible
Load data from versioned sources, avoid manual edits, and make the notebook run top to bottom. Record the snapshot date and filters.
Explore by Segment
Overall averages hide differences between platforms, regions, customer types, and time periods. Slice early.
Validate With Domain Experts
Show surprising patterns to people who know the business or the system that produced the data before acting on them.
Common Mistakes
Averages of Skewed Data
Silently Dropping Missing Rows
Trusting Correlation Without Plotting
FAQ
What is exploratory data analysis?
The initial investigation of a dataset to understand its structure, quality, distributions, and relationships — using summaries and visualizations — before modeling, reporting, or making decisions with it.
What should EDA include?
The data's provenance and meaning, structure and types, duplicates and invalid values, missingness, distributions and outliers, relationships between variables, time patterns, leakage risks for modeling, and written conclusions.
How long should exploratory analysis take?
Long enough to answer whether the data can support the question and what must be cleaned — often hours to a few days for a new dataset. Time-box it and write down open questions rather than exploring indefinitely.
Should I remove outliers?
Only after investigating them. Outliers can be errors to fix, valid extreme cases to keep, or signals such as fraud. Document whatever you decide and test whether results depend on it.
Which tools are best for EDA in Python?
pandas or Polars for data manipulation, Matplotlib and seaborn for static charts, Plotly or Altair for interactive exploration, and Jupyter notebooks to combine code, output, and notes.
Related Topics
- pandas — DataFrames for exploration
- Matplotlib — Charts for analysis and reports
- Python for Data Science — The scientific Python stack
- Data Quality Management — Monitoring and fixing data issues
- Feature Engineering — Turning explored data into model features
- Data Leakage and Validation Splits — Avoiding misleading evaluations