カテゴリカルデータの個数、構成比率、トータル行を集計、整形する方法をまとめました。
サンプルコードの紹介
カテゴリカルデータのそれぞれの個数を大きい順に表示し、その構成比率とトータル行を追加した内容を データフレームとして提供するスクリプトになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
col_name = '部門' # 集計したい列名
tab = df[col_name].value_counts()
tab = pd.DataFrame(tab)
tab = tab.rename_axis(col_name)
tab['構成比']=(tab['count'] / tab['count'].sum())
tab.rename(columns={col_name: '会社数', 'count': '件数'}, inplace = True)
# Total 行を追加する関数
def append_sum_row_label(df):
df.loc['Total'] = df.sum(numeric_only=True)
return df
tab = append_sum_row_label(tab)
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))