問いの立て方
このレッスンでできるようになること。曖昧な問いを、計算できる指標に翻訳できるようになります。
ここまでで集計もグラフも書けるようになりました。しかし現場で最初に渡されるのはデータではなく、言葉です。「どの店が伸びている?」「うちの売れ筋は?」といった問いから始まります。この言葉のままでは計算できません。分析の最初の仕事は、問いを指標に翻訳することです。
「どの店が伸びているか」を考えてみます。伸びているとは何でしょうか。売上の絶対額が大きいことでしょうか。それなら大宮店が伸びていることになりますが、大宮店は最初から大きかっただけかもしれません。前の月からの増加額でしょうか。増加額なら規模の大きい店が有利です。前の月からの増加率なら、小さい店の少しの増加が大きく見えます。どれも間違いではなく、どれを選ぶかで答えが変わります。
だから翻訳の際には、次の3つを言葉にして決めます。何を測るか(金額か数量か)、何と比べるか(前月か前年か他店か)、どの期間を見るか。この3つが決まれば、指標は自動的に決まります。
Python
question = "どの店が伸びているか"
metric = "直近月の売上が前月より何パーセント増えたか"翻訳したら、必ず元の問いを立てた人に確認します。「伸びている」を増加率で測ることに相手が納得していなければ、どんなに正しい計算をしても採用されません。分析が使われないいちばんの理由は、計算の間違いではなく問いのすれ違いです。
翻訳の練習として、比較の相手を必ず1つ持つ癖を付けてください。「渋谷店の売上は120万円でした」は事実ですが、それだけでは良いのか悪いのか分かりません。「前月比で15パーセント増、全店平均を上回っている」まで言えて初めて、聞いた人が判断できます。数字は単体では意味を持たず、比較して初めて意味が生まれます。この考え方が、次の前月比と移動平均の土台になります。
要件
- 売上日を日付型にしてから月を取り出す
- 月は昇順に並べて、最後の2つを直近月と前月とみなす
- total は期間全体の売上合計で比べる
- growth は (直近月 - 前月) / 前月 * 100 で求める
- 前月が0の店舗は growth の候補にしない
入出力例
answer_question("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,鋳物ホーロー鍋,調理器具,1,100000
2026-02-03,渋谷店,鋳物ホーロー鍋,調理器具,1,120000
2026-01-06,横浜店,鉄のフライパン,調理器具,1,40000
2026-02-06,横浜店,鉄のフライパン,調理器具,1,60000
", "total") → {"metric":"total","value":220000,"winner":"渋谷店"}
answer_question("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,鋳物ホーロー鍋,調理器具,1,100000
2026-02-03,渋谷店,鋳物ホーロー鍋,調理器具,1,120000
2026-01-06,横浜店,鉄のフライパン,調理器具,1,40000
2026-02-06,横浜店,鉄のフライパン,調理器具,1,60000
", "growth") → {"metric":"growth","value":50,"winner":"横浜店"}
answer_question("売上日,店舗,商品名,カテゴリ,数量,金額
2026-04-01,大宮店,白磁のマグカップ,食器,1,50000
2026-03-01,横浜店,鉄のフライパン,調理器具,1,20000
2026-04-02,横浜店,鉄のフライパン,調理器具,1,22000
", "growth") → {"metric":"growth","value":10,"winner":"横浜店"}