構成比
このレッスンでできるようになること。1つの月のカテゴリ別構成比を出し、割合と実額の違いを説明できるようになります。
売上が伸びたとき、次に知りたいのは「何が伸びたのか」です。全体の金額だけを見ていても、中身の入れ替わりは見えません。構成比は、全体を100として各カテゴリが何パーセントを占めるかを表した数字です。規模の違う月どうし、店舗どうしを、同じ土俵で比べられるようになります。
計算そのものは割り算です。
Python
by_category = df.groupby("カテゴリ")["金額"].sum()
share = by_category / by_category.sum() * 100pandas では、Series を1つの数値で割ると全要素が割られます。for 文で1つずつ割る必要はありません。この一括計算の考え方はベクトル演算と呼ばれ、pandas の速さの正体でもあります。
丸め方には注意が要ります。小数第1位で丸めると、合計が100.0にならないことがあります。33.3が3つで99.9になるような場合です。報告書で「合計が合わない」と指摘されるのは、この丸め誤差がほとんどです。表に「四捨五入のため合計が100にならないことがあります」と一言添えるのが実務の作法です。
ここからが本題です。構成比は、1時点だけ見てもあまり語れません。「食器が40パーセント」と言われても、それが多いのか少ないのか分かりません。意味が出るのは、時点を並べて変化を見たときです。
食器の構成比が1月の30パーセントから6月の45パーセントに上がったとします。ここで慌てて「食器が伸びた」と言ってはいけません。構成比は割合なので、分母が縮んでも上がります。他のカテゴリが落ち込んだ結果、食器の割合だけが相対的に上がった可能性があります。だから構成比を見せるときは、必ず実額も一緒に出します。実額も構成比も上がっていれば本当に伸びており、構成比だけが上がっているなら周りが落ちたということです。この2つは打ち手がまったく違います。前者は成功事例として横展開でき、後者は落ちたカテゴリの手当てが先です。数字を言葉にするとは、こういう区別を付けることです。
この回の演習では、まず1つの月の構成比を計算します。2時点の比較や、カテゴリが片方の月にしか現れない場合の扱い、上昇の理由の判定は別の段階として考えます。
要件
- 売上日を日付型にしてから月を取り出す
- 指定した月の行に絞り、カテゴリ別の売上合計を求める
- カテゴリ別売上をその月の合計で割って100を掛ける
- 各構成比は round(float(...), 1) で丸めて辞書に入れる