カテゴリカルデータの個数、構成比率、トータル行を集計、整形する方法をまとめました。

サンプルコードの紹介

カテゴリカルデータのそれぞれの個数を大きい順に表示し、その構成比率とトータル行を追加した内容を データフレームとして提供するスクリプトになります。

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)

image

–> 部門別に集計します。

スクリプトの結果

‘部門’で集計結果を表示:

>> format_dict = {'構成比': '{:.1%}', '件数' : '{:n}'}
>> display(tab.style.format(format_dict))

image