Module 2 · Session 06 · 90 min · Python Lab

Session 06: Data Visualization for Insurance

CILO-2 · Analytics Tools · Lab-based, Hands-on (Python) · Jupyter Notebook required
🔗 All Code for This Session Is on GitHub

Learning Objectives

💼

The Manager's Question First

This session teaches you to build charts — but for a management student, that is not the point. The point is what you do with them. Imagine you are the Head of Analytics, presenting to the Board. Every chart you show must let the Board answer three questions in 30 seconds:

WHAT?
What does this tell us? (Read the chart)
SO WHAT?
Why does it matter? (Business impact)
NOW WHAT?
What should we do? (Decision / action)

Every section in this session follows this pattern. The Python code is the tool — the What / So What / Now What is the craft. A chart that fails the 30-second test is decoration, not analysis.

1. Insurance KPIs for Visualization

Before we create a single chart, we must understand what we are visualizing. Insurance has a specific vocabulary of Key Performance Indicators (KPIs) — and every chart should make at least one of these numbers clearer, more actionable, or more memorable. A chart that does not help a business audience make a decision is decoration, not data visualization.

1.1 The Six KPIs That Drive Insurance Visualization

KPIFormulaWhat It RevealsBest Chart Type
Loss Ratio Incurred Claims ÷ Earned Premium Pricing adequacy — is the insurer collecting enough premium for the risk it covers? < 60% may indicate over-pricing; > 85% signals pricing pressure. Line chart (trend), bar chart (by product), gauge (current value vs. target)
Claim Frequency Number of Claims ÷ Number of Policies How often do claims happen? Useful for spotting emerging risk patterns — a rising frequency trend may indicate a new risk factor, product change, or claims process shift. Line chart (trend), bar chart (by segment, region)
Average Claim Size Total Claim Amount ÷ Number of Claims How severe are claims when they occur? Rising average claim size indicates claims inflation — medical cost inflation, repair cost inflation, or more severe losses. Line chart (trend), box plot (distribution by product), histogram (distribution shape)
Claim Settlement Ratio Claims Paid ÷ (Claims Paid + Claims Rejected) How many claims are actually paid? A measure of fairness and customer treatment. Too low (< 80%) is bad for customers. Too high (> 98%) may indicate inadequate fraud control. Bar chart (by product), stacked bar (paid vs. rejected), gauge (current vs. regulatory target)
Persistency / Renewal Rate Policies Renewed ÷ Policies Due for Renewal Customer retention. The most important leading indicator of future profitability. A 1% improvement in persistency can increase enterprise value by 5–10% in life insurance. Line chart (cohort analysis), bar chart (by channel, product)
Premium Growth YoY (Current Year Premium − Prior Year Premium) ÷ Prior Year Premium Business growth rate. Must be analyzed alongside loss ratio — rapid growth with deteriorating loss ratio indicates under-pricing for market share. Bar or waterfall chart, line chart (cumulative), dual-axis (growth + loss ratio)
📝
Note: The best insurance visualizations pair KPIs together. A chart showing premium growth (good news) alongside loss ratio trend (potentially bad news) tells the complete story. A chart showing only one KPI in isolation is almost always misleading. This principle — "pair your KPIs" — distinguishes professional insurance dashboards from amateur ones.

💼 Exercise 1.1 — Which KPI Does Each Stakeholder Watch?

Every KPI exists because someone with a decision to make needs it. For each stakeholder below, choose the KPI they watch most closely, and the decision it drives.

StakeholderPrimary KPIDecision It Drives
CEO / Board
CFO
Head of Underwriting
Head of Claims
Head of Marketing
Check Your Mappings
StakeholderKPIDecision It Drives
CEO / BoardCombined RatioIs the core business profitable? Where to focus capital and strategy. (It captures both claims AND expenses in one number.)
CFOCombined Ratio (+ solvency)Is underwriting profit enough, or must investment income cover losses? Reserve adequacy.
Head of UnderwritingLoss Ratio by productWhich product is priced inadequately? Where to tighten risk selection / raise rates.
Head of ClaimsClaim Settlement Ratio (+ days-to-settle)Are we treating customers fairly and fast enough? Where are process bottlenecks?
Head of MarketingPersistencyAre customers renewing? Where to invest in retention vs. acquisition.

Key idea: The same chart can serve different stakeholders differently. A loss-ratio-by-product chart tells the Underwriting Head what to re-price and the CFO what the profit risk is. Always ask: who is looking at this, and what decision are they making?

2. Matplotlib Foundations

Matplotlib is the foundational plotting library in Python. Seaborn, which we cover in Section 3, is built on top of Matplotlib and provides higher-level statistical visualizations. Understanding Matplotlib basics is essential because all Seaborn plots can be customized using Matplotlib commands.

2.1 Setup and Imports

🔗
Code for this chart is on GitHub: SECTION 2 — Matplotlib foundations (setup) (download the script and run it in Jupyter — copy the relevant section)

2.2 The Anatomy of a Matplotlib Figure

Every Matplotlib chart has a Figure (the container) and one or more Axes (the actual plots within the figure). Understanding this distinction is key to controlling your charts precisely.

🔗
Code for this chart is on GitHub: SECTION 2 — Matplotlib foundations (anatomy) (download the script and run it in Jupyter — copy the relevant section)
SECTION 2 — Matplotlib foundations (anatomy)
What it shows: the basic figure skeleton — fig + ax, title, labels, legend, grid. Every chart in this session follows this same pattern. So what: once you recognise the skeleton, every chart is just a variation. Now what: keep this pattern open — you will reuse it for all 15 charts that follow.

2.3 Essential Matplotlib Customizations

These formatting commands apply to any plot type and are the ones you will use most often in insurance dashboards:

🔗
Code for this chart is on GitHub: SECTION 2 — Matplotlib foundations (customizations) (download the script and run it in Jupyter — copy the relevant section)
💡
Pro Tip: In insurance charts, always annotate significant events — regulatory changes, major catastrophes, product launches, pricing changes. A chart of quarterly loss ratios without the annotation "IRDAI motor TP pricing increased 15% — Q2 2024" is a chart that will confuse its audience. The annotation turns data into a story.
📝
For the manager — you don't need to memorise the API: The figure/axes details above are the plumbing of Matplotlib. You need to know what is possible (annotations, reference lines, dual axes, colour control), not the exact syntax. When you build a chart, copy the patterns from this session. The real skill — the one no library gives you — is deciding what the chart should say and making sure it says it honestly.

👀 Exercise 2.1 — Spot the Deceptive Chart

Both charts below show the same loss-ratio data. One is honest; one is misleading. Identify which is which, what manipulation is used, and why a board could be misled.

Chart A
Y-axis from 0 to 10%
Loss ratio: Jan 7.0%, Feb 7.2%, Mar 7.4%, Apr 7.6%
"Loss ratio stable"
Chart B
Y-axis from 7.0% to 7.8%
Loss ratio: Jan 7.0%, Feb 7.2%, Mar 7.4%, Apr 7.6%
"Loss ratio surging!"

Questions:

  1. Which chart is misleading, and what is the manipulation?
  2. Why would a Board be misled by it?
  3. As a manager, what do you check before trusting a chart's "story"?
Check Your Analysis
  1. Chart B is misleading. It truncates the Y-axis (starts at 7.0% instead of 0). A change from 7.0% to 7.6% is genuinely small (0.6 percentage points) — but by cropping the axis, Chart B makes the bars look like a dramatic surge. Chart A uses the honest full scale and correctly shows the ratio as essentially flat.
  2. A board could be misled into panic (thinking claims are spiralling, demanding drastic action) or — if the chart was used in reverse — into complacency. The 0.6 pp change is real but immaterial; a truncated axis turns it into a "crisis."
  3. Manager's check: (1) Does the Y-axis start at zero? (2) What is the actual numeric change, not just the visual? (3) What time window is chosen — does it cherry-pick a favourable range? (4) Is there a comparison baseline? (5) Who made the chart and what are they trying to convince you of?

This is the most important chart skill in management: the ability to read a chart critically before trusting its conclusion. A chart is an argument — evaluate it like one.

3. Seaborn for Statistical Visualization

Seaborn extends Matplotlib with three capabilities that are particularly useful for insurance analysis: (a) it works directly with Pandas DataFrames without requiring manual data aggregation, (b) it creates statistical plots that automatically compute distributions and relationships, and (c) it has built-in support for faceting (creating multiple related plots by category).

3.1 Key Seaborn Plot Types

🔗
Code for this chart is on GitHub: SECTION 3 — Seaborn statistical plots (download the script and run it in Jupyter — copy the relevant section)
SECTION 3 — Seaborn statistical plots
What it shows: the spread of claim amounts by policy type. Motor claims cluster tightly; Health spreads wide; Property shows extreme outliers. So what: a single "average claim" hides very different risk profiles per line. Now what: price and reserve each line differently — Property needs tail-focused reinsurance, not average-based pricing.
🔗
Code for this chart is on GitHub: SECTION 3 — Seaborn statistical plots (download the script and run it in Jupyter — copy the relevant section)
SECTION 3 — Seaborn statistical plots
What it shows: pairwise relationships between age, income, credit score, premium, and claim amount. So what: a quick scan reveals which variables move together before you build any model. Now what: the visible credit-score vs. claims relationship is a candidate underwriting factor — but correlation is not causation, so verify before using it.
SECTION 3 — Seaborn statistical plots
What it shows: the full density shape of claims per product. Motor is a narrow peak (most claims similar); Health is multi-modal (several distinct claim sizes); Property has a long thin tail. So what: the shape tells you about claim drivers — multi-modal Health claims may mix very different claim types. Now what: investigate what creates the multiple modes before pricing Health.
🔗
Code for this chart is on GitHub: SECTION 3 — Seaborn statistical plots (download the script and run it in Jupyter — copy the relevant section)

3.2 FacetGrid — Multi-Category Comparison

FacetGrid creates a grid of subplots, one for each value of a categorical variable. This is invaluable for comparing distributions across segments:

🔗
Code for this chart is on GitHub: SECTION 3 — Seaborn (FacetGrid) (download the script and run it in Jupyter — copy the relevant section)
SECTION 3 — Seaborn (FacetGrid)
What it shows: claim distributions split by policy type AND claim status. So what: settled, pending, and rejected claims have different distributions — rejections concentrate in certain products. Now what: investigate why some products reject a higher share of claims — is it pricing, documentation, or fraud screening?
📝
Note: When working with large insurance datasets (hundreds of thousands of rows), pair plots and FacetGrid can be computationally expensive. Always use `.sample()` to create a representative subset for exploration, then verify patterns on the full data. The sampling should preserve the distribution of the key variables you are analyzing.

📊 Exercise 3.1 — What Does This Plot Tell a Manager?

You are shown two Seaborn plots. For each, write the business insight — not the statistical detail. Then say what decision the insight triggers.

  1. A box plot of claim_amount by policy_type. You see: Motor has a narrow box around ₹40–60K with a few high outliers. Health has a wide box from ₹10K–₹1.2L with many outliers. Property has a low median but one extreme outlier at ₹2.5 Cr.
    Business insight (What / So What / Now What):
  2. A pair plot / scatter of credit_score vs. claim_amount. You see a clear negative slope — higher credit score, lower claim amounts — with the relationship stronger for Motor than for Health.
    Business insight (What / So What / Now What):
Check Your Insights
  1. What: Claims behaviour differs sharply by product — Motor is stable and contained, Health is volatile across the board, Property has rare but enormous tail losses. So What: A single "average claim" hides the real picture; Property's risk lives in the tail, not the average. Now What: Price and reserve the lines differently — Motor can be priced on the mean, Property needs heavy reinsurance and tail-based pricing, Health needs closer claims control.
  2. What: Credit score is inversely related to claims — a useful signal. So What: It is a candidate rating factor (already common in practice), but the relationship is weaker for Health, so it should not be applied uniformly. Now What: Test credit score as a pricing/underwriting variable per product line — and remember correlation ≠ causation; check for regulatory/ethical limits before using it.

The habit: Every time you look at a plot, force yourself to complete the sentence — "This plot tells me [X], which matters because [Y], so we should [Z]." If you cannot complete it, the chart is not yet useful.

4. Claims Trend Analysis

Time series visualization is the most common type of chart in insurance analytics. Claims trends, premium growth, and loss ratio evolution all require plotting data over time. The key is to show direction, magnitude, and context simultaneously.

4.1 Monthly Claims Trend

🔗
Code for this chart is on GitHub: SECTION 4 — Claims trend (monthly) (download the script and run it in Jupyter — copy the relevant section)
SECTION 4 — Claims trend (monthly)
What it shows: monthly claims with a 3-month rolling average. So what: the rolling line reveals the true trend behind the monthly noise — is it rising, flat, or seasonal? Now what: rising claims + stable premium = pricing deterioration; act on the trend line, not on any single month.

4.2 Year-over-Year Comparison

🔗
Code for this chart is on GitHub: SECTION 4 — Claims trend (year-over-year) (download the script and run it in Jupyter — copy the relevant section)
SECTION 4 — Claims trend (year-over-year)
What it shows: the same months compared across two years. So what: year-over-year comparison removes seasonality and shows true growth. Now what: if most months are higher than last year, that is structural growth — check whether premium grew at the same rate.
🌎
Real World: When a major Indian health insurer plotted its monthly claims trend with a 3-month rolling average, it noticed a persistent uptick in claims frequency starting exactly 6 months after it had introduced a new health insurance product with lower co-payment requirements. The chart told the story that the underwriting team had missed: the lower co-payment was incentiving more claims, and the product was not priced for the higher frequency. The rolling average made the trend visible 3 months earlier than annual financial reporting would have revealed it — saving the insurer an estimated ₹50 crore in unnecessary claims.
📊

The Manager's Read of a Trend Chart

Business Question: Is claims volume growing faster or slower than the business? Is the trend a blip or a structural shift?

How to Read (30 seconds): Look at the slope of the trend line (not the month-to-month noise). Ask: is it rising steadily (structural), spiking (event-driven), or flat (stable)? Check the gap between the actual line and the rolling average — a widening gap means acceleration.

Action it triggers: Rising trend vs. stable premium → pricing is deteriorating → raise rates or tighten underwriting. A spike → investigate the cause (new product, monsoon, fraud ring). A falling trend → check if the business is shrinking or just claims are improving.

5. Portfolio Composition & Comparison

Understanding the composition of an insurance portfolio — how premium, policies, and claims distribute across products, channels, regions, and customer segments — is essential for strategic decision-making. The right charts make these distributions immediately visible.

5.1 Premium by Product Type

🔗
Code for this chart is on GitHub: SECTION 5 — Portfolio (premium by product) (download the script and run it in Jupyter — copy the relevant section)
SECTION 5 — Portfolio (premium by product)
What it shows: total premium by product type. So what: Motor and Health together dominate ~70% of the book — the portfolio lives or dies by these two lines. Now what: protect the big lines; treat small lines as experiments rather than profit drivers.

5.2 Loss Ratio Comparison — Grouped Bar Chart

🔗
Code for this chart is on GitHub: SECTION 5 — Portfolio (loss ratio grouped bar) (download the script and run it in Jupyter — copy the relevant section)
SECTION 5 — Portfolio (loss ratio grouped bar)
What it shows: loss ratio by product and year, with the 100% break-even line. So what: Property and Crop cross 100% — they lose money on every rupee of premium. Now what: this is the "bleeder" quadrant of the BCG lens — launch a 90-day pricing/underwriting review or exit these lines.

5.3 Channel Performance — Treemap Alternative

A treemap is ideal for showing hierarchical composition (channel → product), but requires an additional library (`squarify`). As a pure Matplotlib alternative, a stacked bar chart serves a similar purpose:

🔗
Code for this chart is on GitHub: SECTION 5 — Portfolio (channel performance) (download the script and run it in Jupyter — copy the relevant section)
SECTION 5 — Portfolio (channel performance)
What it shows: premium by channel, stacked by product. So what: Agent and Online dominate, but the product mix differs by channel — channel drives cost and risk. Now what: build channel-specific strategies; do not assume one acquisition model fits all products.
💡
Pro Tip: In an insurance portfolio chart, always sort bars by value (descending from top for horizontal, left-to-right for vertical). The human eye naturally looks for edges and endpoints — placing the highest value at the top-left guides the viewer to the most important information first. Unsorted bar charts force the audience to constantly refer to the legend, which is a sign of poor chart design.
💼

The "BCG Lens" on the Portfolio

A loss-ratio-by-product chart is the insurance equivalent of the BCG Growth-Share Matrix. Read it in two dimensions at once:

  • Volume (premium share): which products bring in the money?
  • Profitability (loss ratio): which products keep the money?

The four quadrants: High volume + low loss ratio = star (protect it). High volume + high loss ratio = bleeder (fix pricing or exit). Low volume + low loss ratio = opportunity (grow it). Low volume + high loss ratio = candidate for exit. A chart that shows only one dimension tells you half the story.

🎤 Exercise 5.1 — Portfolio Review Role-Play

You are the Head of Analytics presenting to the CEO. Here is your portfolio's loss-ratio-by-product chart:

ProductPremium ShareLoss Ratio
Motor40%72%
Health30%78%
Property15%105%
Travel10%55%
Crop5%112%

In one or two sentences each, complete the What / So What / Now What for the CEO:

  1. What does this chart show?
  2. So What — which line is the biggest problem, and why is it worse than the others?
  3. Now What — give ONE action the CEO should approve.
Check a Model Answer

What: Our portfolio is healthy overall (weighted loss ratio ~74%) — Motor and Health, our two big lines, are within the normal band. But two small lines are bleeding: Property at 105% and Crop at 112% are paying out more than they earn in premium.

So What: Crop is the worst — a 112% loss ratio means we lose ₹12 for every ₹100 of premium. Because Crop is only 5% of the book, it is easy to ignore — but it is destroying value on every policy and would be far more damaging if it scaled. Property at 105% is also loss-making.

Now What: Approve a 90-day review of Crop and Property pricing and underwriting — either re-price to a sustainable level or stop writing these two lines. Protect Motor and Health, which are our stars, and consider growing Travel, our most profitable line.

The skill being tested is not the code — it is the discipline of stating the problem in one line and committing to one decision. That is what a board wants from an analytics head.

6. Distribution & Outlier Analysis

Understanding the distribution of claim amounts, claim durations, and premium values is essential for pricing, reserving, and fraud detection. Insurance distributions are almost always right-skewed — a small number of large claims dominate total claims spend.

6.1 Claim Amount Distribution

🔗
Code for this chart is on GitHub: SECTION 6 — Distribution & outliers (claim amounts) (download the script and run it in Jupyter — copy the relevant section)
SECTION 6 — Distribution & outliers (claim amounts)
What it shows: the claim amount distribution — mean well above median (right-skewed). So what: a few large claims drive most of the loss. Reserving on the average understates what you owe. Now what: reserve for the tail, buy reinsurance for the tail, and never price on the mean alone.

6.2 Days-to-Settle Analysis

🔗
Code for this chart is on GitHub: SECTION 6 — Distribution & outliers (days to settle) (download the script and run it in Jupyter — copy the relevant section)
SECTION 6 — Distribution & outliers (days to settle)
What it shows: settlement time — most claims settle fast, some drag past 60 days. So what: settlement speed is the customer experience KPI; the slow tail creates complaints and churn. Now what: investigate the slow tail and fast-track simple claims — speed is the strongest driver of claims satisfaction.
Warning: In insurance claim distributions, the extreme right tail is not noise — it is often the most important part of the distribution. A claim of ₹2 crore in a property portfolio with average claim size of ₹5 lakh is not an "outlier" in the data-cleaning sense. It is a large legitimate loss that the reinsurance program exists to cover. When analyzing insurance distributions, always distinguish between data quality outliers (data entry errors that must be fixed or removed) and business outliers (legitimate extreme values that are the reason insurance exists). Never automatically remove or cap high-value claims without understanding whether they are real.
📊

Why the Skew Is the Most Important Thing on the Chart

When the mean is well above the median (right-skewed), it means a few big claims drive most of the loss. This single fact changes three management decisions:

  • Reserving: Reserving on the average will understate what you owe — you must reserve for the tail.
  • Reinsurance: The tail is exactly what reinsurance exists for — the skew tells you how much tail protection you need.
  • Pricing: Premiums based on the mean under-price the risk of a big loss. A portfolio that "averages out" is only safe if the tail is covered.

💼 Exercise 6.1 — The 30-Second Board Read

Your claims distribution shows: mean = ₹85,000, median = ₹42,000, and the top 1% of claims account for 28% of total claim spend. The board is about to approve next year's reinsurance budget. Write what you tell them — in three sentences: What, So What, Now What.

Check a Model Answer

What: Our claims are heavily right-skewed — the typical claim is ₹42K, but the average is dragged up to ₹85K by a small number of very large claims. The top 1% of claims produce 28% of everything we pay out.

So What: Reserving on the average would systematically understate our liability, and any single year with two or three of these large claims would blow through our loss budget.

Now What: Approve the increased reinsurance layer — we are not buying protection for the average claim, we are buying protection for the top 1%, and that is where the risk actually lives.

Note the discipline: no jargon, no code, no statistics lecture — just a clear read and a clear ask. That is the manager's job.

7. Correlation & Relationship Analysis

Understanding how insurance variables relate to each other — and which relationships are strong enough to be useful for underwriting or pricing — is the foundation of predictive modeling in insurance.

7.1 Correlation Heatmap

🔗
Code for this chart is on GitHub: SECTION 7 — Correlation (heatmap) (download the script and run it in Jupyter — copy the relevant section)
SECTION 7 — Correlation (heatmap)
What it shows: the correlation matrix of key insurance variables. So what: credit score vs. claim amount is the strongest relationship — a candidate underwriting factor. Now what: correlation is not causation; test fairness and regulation before using any factor in pricing.

7.2 Scatter Plot: Premium vs. Claim Amount

🔗
Code for this chart is on GitHub: SECTION 7 — Correlation (premium vs claim) (download the script and run it in Jupyter — copy the relevant section)
SECTION 7 — Correlation (premium vs claim)
What it shows: premium vs. claim amount with a regression line. So what: higher premium is associated with higher claims — expected — but the spread is wide. Now what: premium alone is a weak claim predictor; do not over-rely on it for underwriting.

7.3 Multi-Dimensional Facet Scatter

🔗
Code for this chart is on GitHub: SECTION 7 — Correlation (facet scatter) (download the script and run it in Jupyter — copy the relevant section)
SECTION 7 — Correlation (facet scatter)
What it shows: the premium-claim relationship split by product. So what: the relationship differs across products — Health and Property behave differently from Motor. Now what: build product-specific pricing models instead of one size that fits all.
💡
Pro Tip: Correlation is not causation — and in insurance, this distinction has regulatory implications. A strong correlation between credit score and claim frequency does not mean that a low credit score causes more claims. The regulatory question is: "Is it fair to use credit score for pricing?" In the US, credit-based insurance scoring is legal in most states. In the EU, it would be more heavily scrutinized. In India, the regulatory position is still evolving. Always investigate the why behind a correlation before building it into a pricing model.

🧠 Exercise 7.1 — Which Factors Would You Use to Price Risk?

Your correlation heatmap shows these relationships with claim_amount: credit_score (−0.41), age (+0.28), premium (+0.22), income (−0.15), sum_assured (+0.18). The underwriter asks which factors you would build into a pricing model. Choose your top 3 and justify each.

  1. Top 3 factors to price on:
  2. Which factor would you be cautious about using, and why?
Check a Model Answer
  1. Top 3: credit_score (−0.41), age (+0.28), premium (+0.22). These have the strongest relationships with claim amount — and they are all available at application time, so they are usable for pricing.
  2. Be cautious with credit_score. It has the strongest correlation, but: (a) correlation ≠ causation — it may be a proxy for income or socioeconomic status; (b) it is ethically and legally sensitive as a pricing factor; (c) the EU AI Act and evolving Indian regulation scrutinise automated decisions that use such proxies. You would use it, but with a fairness/impact test and full documentation — not blindly.

The point of this exercise is the trade-off a manager makes every day: predictive power vs. fairness and regulation. The strongest number is not always the right one to use.

8. Publication-Ready Charts

A chart that is not publication-ready is a chart that will not be used. Creating charts that communicate clearly in a boardroom, management report, or client presentation requires attention to detail that goes beyond the default Matplotlib output.

8.1 The Publication Checklist

Before exporting any chart, verify each item on this checklist:

8.2 Creating a Consistent Dashboard Style

Define a custom style once and reuse it across all charts to create a consistent visual identity:

🔗
Code for this chart is on GitHub: SECTION 8 — Publication-ready (style) (download the script and run it in Jupyter — copy the relevant section)

8.3 Exporting Charts

🔗
Code for this chart is on GitHub: SECTION 8 — Publication-ready (exporting) (download the script and run it in Jupyter — copy the relevant section)

8.4 Dual-Axis Chart: Combining KPIs

A dual-axis chart is the most effective way to show the relationship between two KPIs with different units — such as premium growth (₹) and loss ratio (%):

🔗
Code for this chart is on GitHub: SECTION 8 — Publication-ready (dual-axis) (download the script and run it in Jupyter — copy the relevant section)
SECTION 8 — Publication-ready (dual-axis)
What it shows: premium growth (bars) alongside the loss ratio (line) — the "sustainability story." So what: growing premium with a rising loss ratio is growth at any cost; growing premium with a stable ratio is healthy. Now what: pair this chart with any growth claim before the board — it is the single most important check on whether growth is profitable.
💡
Pro Tip: The golden rule of insurance data visualization: never show premium growth without the corresponding loss ratio trend, and never show loss ratio improvement without the corresponding premium trend. A growing portfolio with a stable loss ratio is healthy. A growing portfolio with a rapidly deteriorating loss ratio is a crisis in the making. A shrinking portfolio with an improving loss ratio may mean the insurer is pricing itself out of the market. The dual-axis chart makes all three stories immediately visible.
💬

The 30-Second Presentation Rule

When you present a chart to a board, tell them the conclusion before you show the chart. "Motor loss ratio deteriorated 6 points this year, driven by rising third-party claims — here is the chart." The chart then confirms the message; it does not have to deliver it.

Practice prompt: Take the dual-axis chart (premium vs. loss ratio). Write the one sentence you would say to the CEO before showing it, and the one action you recommend. This is the difference between an analyst who shows data and one who drives decisions.

Hands-On Project: A 1-Page Board Brief from 6 Charts

Using the cleaned merged dataset from Session 05, build 6 publication-quality charts — then turn them into a one-page board brief. The charts are the evidence; the brief is the decision. Every chart you make must answer the manager's three questions: What / So What / Now What.

Steps

  1. Chart 1 — Monthly Claims Trend: Bar chart of monthly claim counts with a 3-month rolling average. Annotate any significant spike or dip.
  2. Chart 2 — Loss Ratio by Product Type: Horizontal bar chart of loss ratio by product. Add reference lines at 75 and 100. This is your "which line is bleeding?" chart.
  3. Chart 3 — Claim Amount Distribution: Histogram with KDE overlay. Add mean and median lines. Print skewness and interpret — this is your "why reserving/reinsurance matter" chart.
  4. Chart 4 — Correlation Heatmap: Heatmap of at least 5 numeric variables. Identify the strongest correlation and comment on whether it is fair to use, not just strong.
  5. Chart 5 — Dual-Axis Chart: Premium growth (bar) vs. loss ratio trend (line). This answers: "is our growth profitable?"
  6. Chart 6 — Settlement Time by Product: Box plot of days-to-settle by product. Add the overall average line — this is your customer-experience chart.
  7. Export all charts at 300 DPI with consistent styling.
  8. Write the 1-page board brief — for EACH chart, two lines only:
    • So What: the single business insight (not the technical detail)
    • Now What: the one decision or action it supports
    Then add a one-line "Headline" at the top: the single most important message the CEO must take away.
View Solution / Walkthrough

Master Solution: 6-Chart Insurance Dashboard

The complete code for all 6 charts is in visualization_analysis.py on GitHub (the HANDS-ON section at the end of the script shows which blocks to reuse). Here is the structure and expected interpretation for each chart:

ChartExpected PatternBusiness Interpretation
1. Monthly Claims Trend Cyclical pattern with claim counts peaking in July–August (monsoon) and December–January (travel/holiday). Long-term gradual upward trend as portfolio grows. "Claims follow a predictable seasonal pattern. The monsoon peak suggests weather-related motor claims — validate by cross-referencing with weather data from Session 18."
2. Loss Ratio by Product Motor likely has highest loss ratio (70–85%), Health moderate (60–75%), Property most variable (40–80% depending on cat events). "Motor insurance is the most capital-intensive line with the highest loss ratio — it drives overall portfolio profitability. Any improvement in motor loss ratio directly improves the combined ratio."
3. Claim Amount Distribution Strong right skew (skewness > 2). Mean > Median. Top 1% of claims may account for 15–30% of total claims cost. "The distribution confirms the classic insurance pattern — a small number of large claims drive the majority of losses. Pricing and reserving must be based on the full distribution, not just the average."
4. Correlation Heatmap Premium shows moderate positive correlation with sum_assured. Credit_score shows weak negative correlation with claim_amount. Age-claim_amount relationship varies by product type. "Credit score has the expected negative relationship with claims — higher credit score, lower claims. The magnitude is modest, suggesting it is one factor among many in risk assessment."
5. Dual-Axis: Premium vs. Loss Ratio Premium growing year-over-year (10–15%). Loss ratio should ideally be stable or declining. If loss ratio is rising as premium grows, the growth is under-priced. "Premium is growing at approximately X% annually. The loss ratio is trending at Y%, which is [within acceptable range / a concern]. This portfolio is [profitable / marginal / at risk]."
6. Settlement Time by Product Motor claims settle fastest (10–20 days median). Property takes longer (20–40 days due to surveyor involvement). Health varies widely depending on cashless vs. reimbursement. "Motor claims settle fastest, reflecting standardized repair processes and aggregated garages. Property claims take longest, driven by surveyor scheduling and complex loss assessment."

Key Considerations for Your Solution

  • Apply the INSURANCE_STYLE consistently so all 6 charts share the same visual identity — this is what makes them a "dashboard" rather than 6 separate charts
  • Use the INSURANCE_PALETTE for all color choices
  • Every chart must have a business title (not just "Claims Trend" but "Motor Claims Growing 12% YoY — Monsoon Spike Amplifying")
  • At least 3 of the 6 charts should have an annotation explaining a specific data point
  • Export all charts at 300 DPI with consistent dimensions
  • The business interpretation paragraph for each chart is as important as the chart itself — without interpretation, it is just a picture

3-2-1 Reflection — Before You Move On

A manager reads charts — practise translating them into decisions. Write from memory, don't scroll back.

3 Things I Learned Today

2 Charts I Can Now Explain to a Manager

1 Question I Still Have About Data Visualisation

Key Takeaways

1

In insurance, the best visualizations pair KPIs together: premium growth with loss ratio, claims frequency with average severity. A single KPI in isolation is almost always misleading.

2

Every chart should make a business insight immediately visible. If the audience cannot see the story in 5 seconds, the chart needs better formatting, annotations, or a different chart type.

3

Insurance claim distributions are heavily right-skewed — mean exceeds median, and the top 1% of claims may account for 20%+ of total cost. Visualizations must not obscure this tail risk.

4

The dual-axis chart (premium growth + loss ratio) is the single most informative chart in insurance analytics — it tells the complete story of whether growth is profitable or destructive.

5

Publication-ready charts require attention to 7 details: business-focused titles, clear axis labels, strategic data labels, contextual annotations, colorblind-safe colors, consistent styling, and high resolution exports.

Test Your Understanding

1. When creating a dual-axis chart showing premium growth (bar) alongside loss ratio (line), the primary business insight you are looking for is:

2. A histogram of claim amounts shows a strong right skew with mean = ₹85,000 and median = ₹42,000. This implies:

3. When using Seaborn's FacetGrid to compare premium vs. claim amount by policy type, the col_wrap parameter controls:

4. In the context of insurance data visualization, what distinguishes a "data quality outlier" from a "business outlier"?

5. The correct Matplotlib command to rotate x-axis tick labels by 45 degrees is: