Back to Data Analysis
Data Analysis · Cheat Sheet
Finding the Story
Tip: Use your browser's print function (Ctrl+P / Cmd+P) to save as PDF for offline study.
Analyzing Cheatsheet
Distributions first
- Look at the shape before reporting any summary — histogram or p50/p90/p99 (percentiles: p50 = the median, p90 = the value 90% of points fall at or below), one query
- Business data (revenue, latency, duration, engagement) is long-tailed by default
- Mean far above median = long right tail; the mean describes no one
- Choose the summary by the question:
| Question | Summary |
|---|---|
| What's a typical unit? | Median (p50) |
| What happens in total? | Mean (mean × count = total) |
| Range of realistic experience? | p10–p90 band, or p50/p90/p99 |
Outliers
- Investigate before deleting — an outlier is one of: an error (fix, disclose), a real atypical event (whale; include/exclude per the question), or the story (fraud, bugs, new segment)
- When a metric jumps, sort by contribution and check the top 10 rows before crediting broad behavior change
- Handling: report medians/percentiles (best first move) \| trim top/bottom k% (disclose) \| winsorize (cap at p99, keep rows)
- Iron rule: disclose the treatment and show results with AND without the extremes
Time series
- Every series = trend + seasonality + noise; attribute the movement before attributing a cause
- WoW (week-over-week): cancels weekly cycle, fast detection, blind to annual patterns
- YoY (year-over-year): cancels annual cycle, measures true growth, slow, breaks on abnormal base years
- 7-day moving average cancels the weekly cycle (one of each weekday); costs lag — distrust the smoothed line's last points
- Never read a trend from two points: need 8–12 periods of history, movement outside normal wiggle, ideally 3+ consecutive periods
Partial periods
- Never compare an incomplete period to complete ones
- Best: period-to-date vs prior period-to-date (June 1–18 vs May 1–18)
- Acceptable: run-rate projection, clearly labeled
- Know your pipeline lag — grey out the last 1–2 days of operational charts
Cohorts
- Cohort = group by START time, follow forward on a time-since-start clock
- Read across a row = lifecycle decay; down a column = product change across cohorts
- Never average or zero-fill the unfinished bottom-right triangle
- Blended retention confounds product quality with acquisition mix — when mix shifts, the blended number can move opposite to every cohort
Funnels
- Step conversion (of those who reached N) = diagnostic view; overall conversion = product of all steps = business view
- Improvements multiply: lifting the worst step lifts overall proportionally — fix the 20% step, not the 85% step
- Build on a fixed entry cohort followed forward, with stated step order and time window — not same-week ratios of different populations
- Survivorship: any metric computed only on completers describes survivors ("median time to buy: 9 min — among purchasers"); push the denominator back to the population in the claim
Designing metrics that don't lie
- Every metric is a proxy (a stand-in) for something you can't measure directly — trust it only if moving the proxy reliably moves the true outcome, even when someone tries to move the proxy on purpose
- Use three roles together: north-star (slow, hard-to-game value, e.g. net revenue retention) \| input (fast weekly lever, e.g. tickets closed — most gameable) \| guardrail (must-not-get-worse, e.g. reopen rate, satisfaction)
- Goodhart's law: when a measure becomes a target, it stops being a good measure — a fair description degrades once people are rewarded for moving it
- Never ship an input metric with no guardrail — ask "what's the laziest way to hit this number without doing the real work?" and the answer names the missing guardrail
- Leading (fast, gameable) vs lagging (honest, late): steer by leading metrics but keep a lagging metric + guardrail in view, so a fake win can't run unchecked for a quarter
- Optimizing one metric alone (engagement, closures, clicks) buys its gains by degrading something unmeasured (retention, trust) — name what must not break before setting the target
Metric-movement triage (in order)
- Data: partial period? pipeline lag? duplicate load?
- Composition: mix shift across segments/cohorts?
- Concentration: a handful of rows (whale, outage) driving it?
- Seasonality: did the same thing happen a year ago?
- Only then: a real behavior change worth a cause
Aligned to the pandas documentation and the practical data-analysis canon.
Make this cheat sheet yours
Personalize this sheet — focus it however you study, or build one from the exact questions you keep getting wrong.
Sign up free to create a personalized cheat sheet.