Getting Oriented Before Digging In

Exploratory data analysis (EDA) is the process of visualizing data and identifying significant patterns like correlated features, missing values, and outliers. It also helps generate hypotheses about why those patterns exist. Before you write any plotting code, it pays to understand the broader context. Talk to leadership and product teams to clarify whether this is a prediction task or pure exploration, since that will direct where you focus your attention.

With that context, assess the dataset's basic dimensions. Knowing the number of samples (rows) and features (columns) helps you anticipate computational bottlenecks. Computing a correlation matrix on very large datasets, for instance, can be slow. If the data won't work comfortably in a Jupyter notebook, subsample it into something representative that you can actually work with.

The first 5 rows of our synthetic dataset. The dataset above does not reflect actual data from Shopify merchants.
The first 5 rows of our synthetic dataset. The dataset above does not reflect actual data from Shopify merchants.

Once your data is loaded, look at the first couple of rows and clarify what each feature means and what unique identifier each row carries. In the sample dataset of merchant behaviour above, the features relate to sales activity, which are defined as follows:

  • Shop Cohort: the month and year a merchant joined Shopify
  • GMV (Gross Merchandise Volume): total value of merchandise sold.
  • AOV (Average Order Value): the average value of customers' orders since their first order.
  • Conversion Rate: the percentage of sessions that resulted in a purchase.
  • Sessions: the total number of sessions on your online store.
  • Fulfilled Orders: the number of orders that have been packaged and shipped.
  • Delivered Orders: the number of orders that have been received by the customer.

Determine what uniquely identifies each row. In this case, rows are uniquely defined by a "Snapshot Date" and "Shop ID" pair, giving one row per shop per day. Understanding this structure early on improves your ability to effectively reference and analyze rows later.

Step 1: Scan for Missing Data

Checking for missing values is usually the first direct look you take at the data. For each feature, count values that are missing and rank the features from worst to best. Doing this one feature at a time with respect to your analysis context is wise when there are many features.

Feature ranking by missing value counts
Feature ranking by missing value counts

The important question isn't just whether data is missing, but why it's missing. Take the example of a feature with 70 percent of its values missing. Driven by numbers alone, you might be tempted to drop it outright. However, if that feature reflects an optional survey question, many people may have simply left it blank. Removing that feature now would introduce bias. Rather, the missing behavior is itself meaningful information and can be coded as a "Not Answered" category to preserve the nuance.

Understanding the cause dictates the treatment. Imputationa dedicated field of statisticsoffers several solutions. For time series data without seasonality or trend, replacing missing values with the mean or median might suffice. With a trend but no seasonality, linear interpolation works well; with both, you need to adjust for seasonality before interpolating.

Step 2: Describe the Sample and Features

Now that missing values are flagged, get to know the features themselves. A useful categorization divides data into three types:

  • Continuous: A feature that can assume an infinite number of values within a range (e.g., GMV).
  • Discrete: A numeric feature with a countable number of values (e.g., Sessions).
  • Categorical: A feature with a finite number of values (e.g., a merchant's Shopify plan type).

This classification drives your choices about what visualizations to make and what statistical methods you can apply, since many tools won't work across all data types.

GMV AOV Conversion Rate
62894.85 628.95 0.17
NaN 1390.86 0.07
25890.06  258.90 0.04
6446.36 64.46 0.20
47432.44 258.90 0.10

For continuous features, note characteristics such as the range between minimum and maximum values. For discrete features, do the same. For categorical features, check the number of unique values and how often each one occurs. In this sample, there are 3 continuous features, 4 discrete features, and 4 categorical features. GMV spans $12.07 to $814468.03; interestingly, data is missing for a single day, suggesting a possible data collection error. The plan feature takes four values: "Basic Shopify", "Shopify", "Advanced Shopify", and "Plus". At 450 merchants, "Advanced Shopify" is well represented vs 255 "Basic Shopify" users, which may warrant a sanity check.

Step 3: Understand the Data's Shape

The shape of a featureits distribution and how it behaves over timereveals a great deal. Plot features over time if you have a time series to inspect for trends and seasonality.

GMV and Sessions behaviour across samples
GMV and Sessions behaviour across samples

In the visual example, AOV and Sessions exhibit positive linear trends, while Sessions also shows a seasonality. In this case, the recurring pattern you observe isn't a function of time alone, but of the mix of shops in the data: two specific shops (Shop 1 and Shop 51) have far more daily sessions and a faster growth rate than their peers, a clue that warrants further investigation into whether these shops have higher GMV or AOV.

In line graph below we have Snapshot date on the x-axis and we see that the Sessions (y-axis) seasonality was a result of two specific shops: Shop 1 and Shop 51

Next, compute the mean and variance of each feature. Do some features barely change at all? Are others constantly in flux? Skewness is a common outcome worth noting. When data behaves consistently, a low variance may make it less interesting; a very high variance requires deeper inspection.

Use Probability Density Functions (PDFs) for continuous features and Probability Mass Functions (PMFs) for discrete ones to explore these shapes. Among the things PDFs and PMFs help you spot:

  • Skewness: asymmetry of the data, which may deter you from using the mean as the sole measure of central tendency.
  • Heterogeneity: whether a feature is bimodal or multimodal in nature.
  • Disconnection: gaps in the PDF hinting that a feature may be disjointed.
  • Bounds: whether values are bounded or unbounded on either end.
Example of feature density functions
Example of feature density functions

In this sample data, GMV, AOV, Sessions, and Conversion Rate are all heavily skewed. Skewed data often calls for the median rather than the mean as a central-tendency measure, albeit at additional computational cost. Noting these observations systematically helps you move toward a more informed analysis stage:

  • AOV: continuous, ranging $38.69–$8994.58, with 8% missing; large skewness and a positive linear trend across samples.
  • Sessions: discrete and non-negative count data, ranging 2–2257; 7.7% missing; highly skewed with a positive linear trend; dominated in recent periods by Shops 1 and 51.
  • Conversion Rate: continuous, bounded between 0.0 and 0.86, with 7.7% missing; large skewness.

For each feature, forming a hypothesis about observed variance, missing values, or unusually high activity helps you make the most of the exploration phase, preparing you for deeper statistical analysis and modelling.

Measuring Relationships Between Features

Correlation quantifies how two variables move together. For two continuous features, a scatter plot is the quickest way to see the relationship. Plotting Delivered Orders against Fulfilled Orders shows the expected positive association, where higher fulfillment counts align with more delivered orders.

Scatter plot showing positive correlation between features “Delivered Orders” and “Fulfilled Orders”
Scatter plot showing positive correlation between features “Delivered Orders” and “Fulfilled Orders”

With many features, individual scatter plots become impractical. The Pearson correlation matrix solves this by computing a linear correlation score between every feature pair, ranging from -1 to 1. Positive scores indicate a positive relationship, negative scores an inverse one, and the magnitude reflects strength.

Correlation matrix for continuous and discrete features
Correlation matrix for continuous and discrete features

The matrix often reveals meaningful patterns worth hypotheses. In the typical dataset, you might see a strong positive relationship between Fulfilled Orders and Delivered Orders, and another between GMV and AOV. Even a slight positive correlation between Sessions, GMV, and AOV can be significant — noting these links helps later modeling steps.

Because the underlying data is a time series, autocorrelation also matters. Autocorrelation measures the relationship between a signal's current value and its own past values — for instance, whether a shop's GMV today correlates with its GMV a week ago. Time series analysis is a broad topic, but understanding these dependencies is important for forecasting and identifying seasonality patterns like weekend shopping spikes.

Shop Cohort 2019-01 2019-02 2019-03 2019-04 2019-05 2019-06
Plan
Adv. Shopify 71 102 27 71 87 73
Basic Shopify 45 44 42 59 0 57
Plus 29 55 69 44 71 86
Shopify 53 72 108 72 60 28

For categorical features, the Pearson approach does not apply. One workable option is the Pearson chi-square test. You build a contingency table from pairs of discrete features, where each cell shows observation frequency. Under the null hypothesis, the categorical variables are independent and unrelated. A hypothesis test against the chi-square distribution at your chosen significance level tells you whether the variables are independent or dependent.

Identifying Outliers

Outliers are samples that deviate significantly from the rest of the data. They can distort statistical results, so spotting them is an essential part of EDA. Some outliers come from measurement errors; many others occur naturally in the real world.

Continuous feature box plots
Continuous feature box plots

A box plot makes outliers easy to see. Points plotted far from the main body of data stand out immediately, and the same visualization reveals that nearly every feature contains at least some unusual observations.

For a systematic approach across many features, percentile thresholds work well. Compute the 1st and 99th percentiles for each feature and flag any data point below the first or above the last. Then count the outliers per feature and rank them. Features with the most outliers deserve the closest scrutiny — understanding why they behave this way is more valuable than simply removing the offending rows.

Percentiles require ordering, so this trick does not apply to discrete features. There, an outlier might mean something else — a rare category value appearing in only one percent of samples, for example. More advanced anomaly detection methods exist for categorical data, but the basic principle remains the same: know what is unusual and why.

Finishing the Review

A complete EDA boils down to a handful of habits worth carrying forward:

  • Missing values never go away on their own. Know why they exist and how you will handle them.
  • Describe and categorize your features early. This choice drives both visualizations and statistical techniques.
  • Visualize every distribution. You cannot predict what shapes or surprises the data will show.
  • Document feature relationships. Correlations discovered now will be useful in later modeling.
  • Treat outliers as known quantities. Hidden outliers are the dangerous ones.

With the EDA complete, the next steps depend entirely on the business problem. A clear summary of findings helps leadership and product teams decide what to build. The work might feed a regression model, a classification task, or a KPI dashboard. The path forward is not fixed, but it is much clearer with a thorough understanding of the data in hand.