01.2.3
数値カラムを一括集計する
DataFrame.agg は、「平均・中央値・標準偏差」のような複数の集計関数を名前のリストで渡すと、全列に対して一度に計算して 1 枚の表にする関数です。このページでは総務省の歳出データ soumu-gdp-clean.csv の年度列すべてに agg(["count", "mean", "median", "std", "min", "max"]) を適用して転置し、apply で独自関数の変動係数 CV(標準偏差 ÷ 平均)を列として足します。続けて melt で long 形式にしたデータを groupby("カテゴリ").agg(latest=..., avg=..., y1_y10=...) に渡し、費目ごとの最新値・平均・最初と最後の差を 1 行にまとめます。最後に to_markdown でレポート用の表を書き出し、seaborn の lineplot で推移を確かめるところまでを、定例レポートのテンプレートとして組み立てます。狙い #
定例レポートや監視では「平均・中央値・標準偏差・前年比差分」など複数の指標を一括で計算したい場面が多いです。df["H1"].mean()、df["H1"].median() と列ごと・指標ごとに書くと 30 列 × 6 指標で 180 行のコードになりますが、agg に関数名のリストを渡せば 1 回で全部の組み合わせが埋まります。pandas の agg / describe / groupby を組み合わせると、集計表をテンプレ化できます。
次のコードは整形済み CSV を読み込み、「カテゴリ」以外の列名を数値列として取り出します。
| |
1. agg で複数集計
#
次のコードは、年度列すべてに 6 つの統計量を一括で計算し、転置して「1 行 = 1 列の統計量」の表にします。
| |
KPI を追加 #
次のコードは、変動係数 CV(標準偏差 ÷ 平均)を独自関数として定義し、年度ごとの値を summary に列として足して、ばらつきの大きい順に表示します。
| |
独自関数を apply で渡すだけでカスタム KPI も一覧化できます。
2. groupby + agg でカテゴリ別集計
#
次のコードは、wide の表を melt で long にしてからカテゴリごとにまとめ、最新値・平均・最初と最後の差の 3 つを名前付きで集計します。
| |
agg では (列名, 集計関数) のタプルで任意の集計を組み合わせられます。lambda を使えば差分や比率なども一発で算出できます。
3. Aggregation Report を DataFrame にまとめる #
次のコードは、summary に「どの集計か」を表すラベル列を足し、レポートに載せる列だけを選んだ report を作ります。
| |
この report を CSV / Markdown に書き出しておくと、タスク管理ツールや BI へ反映しやすくなります。次の 1 行で Markdown の表として保存します。
| |
可視化でトレンド確認 #
次のコードは、long 形式のデータをカテゴリごとに色分けした折れ線で描き、年度の推移を確かめます。
| |
agg で概況を掴んだあとに、ラインチャートでトレンドを確かめると精度の高いインサイトにつながります。確かめたいのは、agg_by_category の y1_y10 が大きい費目が図でも右上がりの線になっているか、の 1 点です。
チェックリスト #
最初に確認したいのは、agg の結果をテンプレ DataFrame(report)にまとめ、to_markdown でレポート出力を自動化したかです。二つ目はカスタム KPI(CV、前年比差分など)も apply や lambda で定義したか、三つ目は groupby と組み合わせてカテゴリ別の増減(y1_y10)を lineplot で可視化できる状態にしたかです。最後に Markdown / CSV 出力を整備し、ナレッジ共有しやすくしたかを見ます。
このテンプレートを他プロジェクトでも再利用できるよう GitHub gist や Snippet 管理に登録しておくと便利です。