カテゴリカルデータの個数、構成比率、トータル行を集計、整形する方法をまとめました。
データフレームの特定の列(例:部門)ごとに、❶件数(何件あるか)、❷構成比(全体のうち何%か)を出して、 後で加工しやすい「表(データフレーム)」の形にまと、ついでに合計(Total)行も付けるためのスクリプトをまとめました。
サンプルコードの紹介
カテゴリカルデータのそれぞれの個数を大きい順に表示し、その構成比率とトータル行を追加した内容を データフレームとして提供するスクリプトになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 件数(count)と構成比(normalize=Trueで比率が出せる)
vc = df[col_name].value_counts(dropna=False) # 件数
ratio = df[col_name].value_counts(dropna=False, normalize=True) # 構成比
# データフレーム化して結合
tab = pd.DataFrame({
'件数': vc,
'構成比': ratio
})
# 合計行(Total)を追加
tab.loc['Total', '件数'] = tab['件数'].sum()
tab.loc['Total', '構成比'] = tab['構成比'].sum()
# 表示用フォーマット
format_dict = {'構成比': '{:.1%}', '件数': '{:n}'}
display(tab.style.format(format_dict))
サンプルデータフレーム
以下のとおり、サンプルデータフレームの集計結果をデータフレームとして得ることができます。
1
2
3
4
5
6
7
8
9
10
# 演習用のデータフレームを作成します。
df = pd.DataFrame({ 'ID': ['01285679', '01340788', '02123782', '10541976', '12297411',
'13299899', '48144450', '55339981'],
'出身地': ["東京都","山口県",'大阪府','千葉県','東京都',
'埼玉県','千葉県','千葉県'],
'部門': ["首都圏営業部","関西支部","本部総務",
"研究開発","東北支部","北海道支部",
"首都圏営業部","研究開発"]},
index=[0, 1, 2, 3, 4, 5, 6,7])
# オリジナルのデータフレームを表示
サンプルデータフレームを表示:
>> display(df)

–> 部門別に集計します。
スクリプトの結果
‘部門’で集計結果を表示:
>> format_dict = {'構成比': '{:.1%}', '件数' : '{:n}'} >> display(tab.style.format(format_dict))
