【Python】Pandas DataFrameでアイテムセットの頻度をカウントする方法|value_counts()の使い方
PandasでDataFrame内のアイテムセット(各列の値)の出現頻度をカウントしたい場合は、Series.value_counts()メソッドを使うのが最も簡単です。このメソッドは、指定した列に含まれる一意な値とその出現回数を、多い順に並べて返してくれます。
サンプルDataFrameの作成
まずは、車種・販売地域・販売台数を含むサンプルDataFrameを作成しましょう。
# DataFrameの作成
dataFrame = pd.DataFrame({'Car': ['BMW', 'Mercedes', 'Lamborghini', 'Audi', 'Mercedes', 'Porsche', 'Lamborghini', 'BMW'],
'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Bangalore', 'Hyderabad', 'Mumbai', 'Mumbai', 'Pune'],
'UnitsSold': [95, 80, 80, 75, 92, 90, 95, 50]})
value_counts()で列の頻度をカウントする
例として、Car列(車種)の出現頻度をカウントしてみます。
# Car列の頻度をカウント
count1 = dataFrame['Car'].value_counts()
print("\nCount in column Car")
print(count1)
同じ要領で、他の列(Place列やUnitsSold列など)についても頻度を求めることができます。
完全なサンプルコード
以下が、Pandas DataFrameでアイテムセットの頻度をカウントする完全なコードです。
import pandas as pd
# DataFrameの作成
dataFrame = pd.DataFrame({'Car': ['BMW', 'Mercedes', 'Lamborghini', 'Audi', 'Mercedes', 'Porsche', 'Lamborghini', 'BMW'],
'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Bangalore', 'Hyderabad', 'Mumbai', 'Mumbai', 'Pune'],
'UnitsSold': [95, 80, 80, 75, 92, 90, 95, 50]})
print("Dataframe...")
print(dataFrame)
# Car列の頻度をカウント
count1 = dataFrame['Car'].value_counts()
print("\nCount in column Car")
print(count1)
# Place列の頻度をカウント
count2 = dataFrame['Place'].value_counts()
print("\nCount in column Place")
print(count2)
# UnitsSold列の頻度をカウント
count3 = dataFrame['UnitsSold'].value_counts()
print("\nCount in column UnitsSold")
print(count3)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Dataframe...
Car Place UnitsSold
0 BMW Delhi 95
1 Mercedes Hyderabad 80
2 Lamborghini Chandigarh 80
3 Audi Bangalore 75
4 Mercedes Hyderabad 92
5 Porsche Mumbai 90
6 Lamborghini Mumbai 95
7 BMW Pune 50
Count in column Car
BMW 2
Lamborghini 2
Mercedes 2
Audi 1
Porsche 1
Name: Car, dtype: int64
Count in column Place
Mumbai 2
Hyderabad 2
Chandigarh 1
Pune 1
Delhi 1
Bangalore 1
Name: Place, dtype: int64
Count in column UnitsSold
95 2
80 2
92 1
75 1
90 1
50 1
Name: UnitsSold, dtype: int64
まとめ
出力結果からわかるように、BMW・Lamborghini・Mercedesはそれぞれ2件ずつ、AudiとPorscheは1件ずつ登録されています。また、販売地域ではMumbaiとHyderabadに2件ずつの記録があることが確認できます。
このようにvalue_counts()を使えば、カテゴリカルデータの分布や重複の確認をたった一行で行えるため、データ分析の前処理や探索的データ解析(EDA)で非常に便利です。なお、デフォルトでは出現回数の降順でソートされますが、ascending=Trueオプションを指定すれば昇順に変更することも可能です。
-
PandasのマルチインデックスDataFrameでgroupbyを実行する方法
マルチインデックスDataFrameとは、複数のインデックス(階層的なインデックス)を持つデータフレームのことです。本記事では、マルチインデックス化されたDataFrameに対してgroupbyを使用し、特定のレベルごとに集計を行う方法を解説します。サンプルデータの準備まず、デスクトップに保存された以下のようなCSVファイル(sales.csv)を用意します。車種(Car)、地域(Place)、販売台数(UnitsSold)のデータが含まれています。最初に、pandasライブラリをインポートし、CSVファイルを読み込みます。import pandas as pd df = pd.read_c
-
Python Pandasでデータフレームの列の値をX軸ラベルとして設定する方法
PythonのPandasでデータフレームの列の値をX軸ラベルとして設定するには、plot()メソッドの引数にxticksを指定します。これにより、データの値をそのまま目盛りラベルとして表示できるため、グラフがより読みやすくなります。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。Pandasを使って、column1というキーを持つデータフレームを作成します。plot()メソッドでデータフレームをプロットし、column1の値をX軸ラベルとして指定します。図を表示するには、show()メソッドを使用します。コード例import pandas as pd fro