Python カテゴリ変数の種類と数を調べる「Pandasのgroupby」

'21/07/09更新:カテゴリ変数をリスト化したり、数や平均値でソートする方法を追記しました。
  本記事では、例えば下図のように「species」というカテゴリ変数を調べる雛形コードを載せました。例題に使用したデータは、機械学習でお馴染みのアイリスデータセットで本来は150行あります。しかし、本説明の便宜上、3つあるカテゴリ変数の個数を違う数にしたかったためにいくつか削除して135行にしています。

f:id:HK29:20210709155119p:plain

csvファイルはパンダスで読み込みます。

import pandas as pd

# csvファイルをpandasデータフレームで読み込む
df = pd.read_csv('iris-dataset2.csv')

 ■1. カテゴリ変数の種類と数を調べたい場合

# カテゴリ別に各列の要素数を数える場合
df.groupby('species').count()

すると、カテゴリは「setosa」「versicolor」「virginica」の3つあることがわかります。

f:id:HK29:20210709155705p:plain

■2. カテゴリ変数をリスト化したい場合

# カテゴリ一覧をリストにする場合
category_list = df.groupby('species').count().index.to_list()
print(category_list)

f:id:HK29:20210709160004p:plain

■3. 指定した列の数でソートしたい場合

# カテゴリ別の数の順にソートする場合
count_sorted = df.groupby('species')['petal_width'].count().sort_values(ascending=True)

f:id:HK29:20210709160321p:plain

■4. 上記をリスト化したい場合

# 上記ソート順に、カテゴリ変数名をリスト化したい場合
count_sorted_list = count_sorted.index.to_list()
print(count_sorted_list)

f:id:HK29:20210709161014p:plain

■5. 指定した列の平均値でソートしたい場合

# カテゴリ別の平均値の順にソートする場合
grouped = df.groupby('species')['petal_width']
mean_sort = grouped.describe().sort_values('mean', ascending=True)
print(mean_sort)

f:id:HK29:20210709161246p:plain

このカテゴリ順にリスト化したい場合は、上記4と同じ処理をします。

以上

<広告>