Exploratory analysis plan for a new dataset
Turn a dataset description into a step-by-step exploration plan with checks, hypotheses and the first charts to make.
Change note: Initial version
Prompt
I'm about to explore a dataset and want a plan before I open any tools.
Dataset description:
{{dataset_description}}
The business question or goal: {{goal}}
Tools I'll use: {{tool}}
My experience level: {{experience}}
Create an exploratory analysis plan with these sections:
1. Assumptions: what you are assuming about the data, stated explicitly. If something critical is missing (grain of a row, time range, how it was collected), list it under "Questions to answer first" instead of guessing.
2. Data health checks: 6-8 specific checks in the order I should run them (row grain, duplicates, missing values, impossible values, date coverage, join keys, units), each with what a problem would look like.
3. Univariate and bivariate exploration: which columns to profile first and which pairs of columns to compare, tied to the goal.
4. Hypotheses: 4-5 testable hypotheses related to the goal, each with the cut of data that would confirm or refute it.
5. First five charts: chart type, axes, and what a surprising result would tell me.
6. Pitfalls: biases or traps specific to this kind of data (survivorship, seasonality, selection effects, etc.).
7. Stopping point: how I will know the exploration is done and what to hand over.
Where useful, include a short {{tool}} snippet or command. Keep the whole plan under 700 words and use plain language suited to a {{experience}} analyst.Variables
{{dataset_description}}Dataset descriptionlongDefault: An e-commerce orders table with about 400k rows from Jan 2023 to Jun 2024. Columns: order_id, customer_id, order_date, country, product_category, quantity, unit_price, discount_pct, shipping_days, returned (yes/no).
Columns, row count, date range, source. Rough is fine.
{{goal}}Goal or questiontextDefault: Understand why return rates rose in the last two quarters
{{tool}}ToolselectOptions: Python (pandas), R, Excel, Google Sheets, SQL, Tableau or Power BI
Default: Python (pandas)
{{experience}}Experience levelselectOptions: beginner, intermediate, advanced
Default: intermediate
Example output
**1. Assumptions** - One row = one order line, not one order. Return status is recorded at return time. - All prices are in one currency. **Questions to answer first**: Does order_id repeat? Is the return window fixed? Were categories added or dropped in the period? **2. Data health checks (in order)** 1. Row grain: df.order_id.is_unique. If False, decide whether to aggregate to orders. 2. Duplicates: df.duplicated().sum(). Exact duplicates inflate revenue and returns. 3. Missing values: df.isna().mean().sort_values(). Flag columns above 5%. 4. Impossible values: quantity <= 0, unit_price <= 0, discount_pct > 100, shipping_days < 0. 5. Date coverage: orders per week from Jan 2023 to Jun 2024. Gaps or spikes suggest a logging change. 6. Return consistency: returned = yes with no shipping_days is suspicious. 7. Join keys: customer_id nulls or formats that will break a later join. **3. Exploration**: profile returned, product_category, discount_pct, shipping_days first. Compare returned against each of them, then country and customer_id (repeat returners). **4. Hypotheses** - One category drives the rise (return rate by category by quarter). - Heavy discounting attracts low-intent buyers (rate by discount band). - Slow shipping drives returns (rate by shipping_days bucket). - Country mix shifted, behaviour did not (rate and share by country over time). **5. First five charts** 1. Line: weekly return rate. A step points to a process change, a slope to mix. 2. Stacked bar: orders by category per quarter. 3. Heatmap: return rate by category x quarter. 4. Bar: return rate by discount band. 5. Box plot: shipping_days, returned vs not. **6. Pitfalls**: recent orders have not had time to be returned (right-censoring), which can hide or fake a trend. Watch seasonality, since Q4 and January returns are always higher. **7. Stopping point**: one or two segments explain at least 70% of the rise. Hand over a one-page summary with the charts and open questions.
Notes
It forces assumptions and health checks before analysis, and every hypothesis is tied to a specific cut of data. Add a sample of the first 5 rows to the description for more precise checks.