Skip to content

exploratory data analysis (EDA)

Exploratory data analysis (EDA) is an approach to analyzing a dataset that puts summaries and visualizations first, before any formal modeling or hypothesis testing. The goal is to find out what the data actually contains: its shape, its distributions, its gaps, and the relationships between its variables.

Statistician John Tukey set out the approach in his 1977 book Exploratory Data Analysis, and the philosophy behind it is to let the data reveal its own structure instead of imposing assumptions on it up front.

A typical EDA pass mixes cheap numeric checks with plots. You inspect the row count and the column data types, then compute summary statistics such as the mean, the median, and the quartiles that split the sorted values into four equal parts. You also count missing values and look for outliers that would distort a later model.

Histograms, box plots, and scatter plots carry much of the load, because a pattern is quicker to see than to read off a table.

In Python, EDA usually runs over a pandas DataFrame inside a Jupyter notebook, where each check builds on the one before it. The pandas library handles the numeric summaries, and plotting libraries such as Matplotlib and seaborn handle the visual half.

Example

Say a weather-station export lands on your desk and you need to know whether the temperature column is trustworthy before you average it:

Language: Python
>>> import pandas as pd

>>> readings = pd.DataFrame(
...     {
...         "station": ["north", "north", "south", "south", "east"],
...         "temp_c": [21.5, 22.0, 19.8, 250.0, None],
...         "humidity": [48, 51, 55, 53, 60],
...     }
... )

>>> readings.describe()
           temp_c   humidity
count    4.000000   5.000000
mean    78.325000  53.400000
std    114.453874   4.505552
min     19.800000  48.000000
25%     21.075000  51.000000
50%     21.750000  53.000000
75%     79.000000  55.000000
max    250.000000  60.000000

>>> readings.isna().sum()
station     0
temp_c      1
humidity    0
dtype: int64

The summary is where the trouble surfaces. A mean of 78.3 degrees Celsius sitting next to a median of 21.75 and a maximum of 250 points to one implausible reading rather than a heat wave, and the count of four against five rows says a value is missing.

The second check confirms that the gap is in temp_c, not in the other columns. Neither problem stands out in the raw table, and both would skew any average taken from that column. Spotting them is the work EDA does.

Drag the south station’s reading below and watch the summary recompute: the mean chases the bad value while the median holds steady near 21.75, and filling in the missing east reading moves count from four to five.

Interactive diagram — enable JavaScript to view.
Python Statistics Fundamentals: How to Describe Your Data

Tutorial

Python Statistics Fundamentals: How to Describe Your Data

In this step-by-step tutorial, you'll learn the fundamentals of descriptive statistics and how to calculate them in Python. You'll find out how to describe, summarize, and represent your data visually using NumPy, SciPy, pandas, Matplotlib, and the built-in Python statistics library.

intermediate data-science numpy

For additional information on related topics, take a look at the following resources:


By Martin Breuss • Updated Aug. 22, 2026