Data storytelling & reporting
An analysis only creates value when someone acts on it. Senior managers have limited time, so your job is to deliver one clear message, backed by evidence, with a recommended action. That is data storytelling.
Start with the big idea
Before building slides, write your main message in one sentence that contains a point of view and the stakes:
"Weekday evening sales in our Lucknow stores fell 18% after the new traffic rules, so we should test a 6–9 pm delivery offer before the wedding season."
If you cannot write this sentence, you are not ready to present.
A simple structure: situation, complication, resolution
| Part | Question it answers | Example |
|---|---|---|
| Situation | What is normal? | Lucknow stores contribute 22% of revenue. |
| Complication | What changed or is at risk? | Evening sales dropped 18% since March. |
| Resolution | What should we do? | Pilot delivery offer in two stores for four weeks. |
Put the recommendation first for senior audiences and the supporting evidence after it.
Pick the chart for the message
| Message | Chart |
|---|---|
| Change over time | Line chart |
| Compare categories | Horizontal bar chart, sorted |
| Part of a whole (few parts) | Stacked bar, or a pie with at most 3–4 slices |
| Relationship between two numbers | Scatter plot |
| Single headline number | Big number with a comparison ("₹4.2 cr, +9% vs last year") |
Make the chart say the message
Use the title for the insight, not a description, and highlight only what matters:
import matplotlib.pyplot as plt
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
evening = [410, 402, 395, 330, 322, 318] # ₹ thousand
fig, ax = plt.subplots(figsize=(7, 3.5))
ax.plot(months, evening, color="grey", marker="o")
ax.plot(months[2:4], evening[2:4], color="crimson", linewidth=3)
ax.annotate("New traffic rules", xy=(3, 330), xytext=(3.4, 380),
arrowprops={"arrowstyle": "->"})
ax.set_title("Lucknow evening sales fell 18% after March")
ax.set_ylabel("Sales (₹ thousand)")
ax.spines[["top", "right"]].set_visible(False)
plt.tight_layout()
plt.savefig("evening_sales.png", dpi=150)
Grey for context and one accent colour for the story is a simple rule that works almost everywhere.
The one-page report
For recurring reporting (weekly MIS, monthly review), a consistent layout builds trust:
- Headline — the one sentence that matters this week.
- KPI strip — 3–5 numbers, each with a comparison (vs target, vs last year).
- Two or three charts explaining the biggest movements.
- Actions and owners with dates.
- Notes — data sources, definitions and known data issues.
Common mistakes
- Showing every chart you made instead of the three that support the message.
- Titles like "Sales by month" that make the reader find the insight.
- Numbers without context: ₹38 lakh means nothing without a target or comparison.
- Hiding uncertainty; say plainly when data is incomplete or a sample is small.
- 3D charts, dual axes and rainbow colours.
Practice
Take any analysis you have done recently. Write the big-idea sentence, redraw your most important chart with an insight title and a single highlight colour, and fit the whole story on one page using the five-part layout above.