つくる:示唆を1枚に
このレッスンでできるようになること。前月比・構成比・外れ値の結果を、数字ではなく言葉の形にまとめられるようになります。新しい文法は出てきません。
第7章でやってきたことを1つにまとめます。ここで作るのは表でもグラフでもなく、文章です。分析の成果物は最終的に言葉になります。誰かが読んで判断できる形にならなければ、どれだけ精緻な計算をしても使われません。
言葉にするときの型を紹介します。事実、解釈、含意の3段です。
事実は数字そのものです。「6月の全店売上は前月比プラス12パーセント」。ここには解釈を混ぜません。解釈は、その数字が何を意味するかです。「3ヶ月連続の増加で、回復基調にある」。含意は、だから何をすべきかです。「増加の中心は渋谷店の食器カテゴリなので、同じ施策を他店に広げる余地がある」。
この3段を混ぜないことが大切です。事実と解釈が混ざった文章は、読み手が検証できません。「売上が好調です」は事実のようでいて解釈です。何と比べて好調なのかが書かれていないからです。逆に数字だけを並べた報告は、読み手に解釈を丸投げしていることになります。
分かったことを3つに絞るのにも意味があります。10個並べると、読み手はどれが重要か分かりません。3つに絞るには、どれを捨てるかを決めなければならず、その判断こそが分析者の付加価値です。選ぶ基準は、行動が変わるかどうかです。知っても何も変わらない事実は、面白くても外します。
Python
findings = []
findings.append(f"全店売上の前月比は {rate} パーセントです")最後に、書いた文章を自分で疑う手順を入れてください。その数字は並び順を間違えていないか。構成比だけを見て実額を忘れていないか。外れ値を含めたまま平均を語っていないか。この章で学んだ落とし穴は、どれも「気づかないまま間違った結論を出す」形で現れます。計算が通ることと、結論が正しいことは別です。
要件
- 売上日を日付型にしてから月を取り出し、昇順に並べる
- 前月比は (直近月 - 前月) / 前月 * 100 で求め、小数第1位で丸める
- top_store と top_category はそれぞれ groupby の合計から求める
- findings は指定された順序と文面で3つ作る
- 数値は素の型に直してから文字列に埋め込む
入出力例
summarize_findings("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,白磁のマグカップ,食器,20,100000
2026-01-06,横浜店,積み重ね収納ボックス,収納,10,50000
2026-02-05,渋谷店,白磁のマグカップ,食器,24,120000
2026-02-06,横浜店,積み重ね収納ボックス,収納,12,60000
") → {"findings":["全店売上の前月比は 20.0 パーセントです","売上が最も大きい店舗は 渋谷店 です","売上が最も大きいカテゴリは 食器 です"],"growth_rate":20,"top_category":"食器","top_store":"渋谷店"}
summarize_findings("売上日,店舗,商品名,カテゴリ,数量,金額
2026-05-01,大宮店,鋳物ホーロー鍋,調理器具,5,80000
2026-06-01,大宮店,鋳物ホーロー鍋,調理器具,2,40000
2026-06-02,横浜店,布製収納バスケット,収納,10,20000
") → {"findings":["全店売上の前月比は -25.0 パーセントです","売上が最も大きい店舗は 大宮店 です","売上が最も大きいカテゴリは 調理器具 です"],"growth_rate":-25,"top_category":"調理器具","top_store":"大宮店"}