Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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オプションを指定すれば昇順に変更することも可能です。

  1. PandasのマルチインデックスDataFrameでgroupbyを実行する方法

    マルチインデックスDataFrameとは、複数のインデックス(階層的なインデックス)を持つデータフレームのことです。本記事では、マルチインデックス化されたDataFrameに対してgroupbyを使用し、特定のレベルごとに集計を行う方法を解説します。サンプルデータの準備まず、デスクトップに保存された以下のようなCSVファイル(sales.csv)を用意します。車種(Car)、地域(Place)、販売台数(UnitsSold)のデータが含まれています。最初に、pandasライブラリをインポートし、CSVファイルを読み込みます。import pandas as pd df = pd.read_c

  2. Python Pandasでデータフレームの列の値をX軸ラベルとして設定する方法

    PythonのPandasでデータフレームの列の値をX軸ラベルとして設定するには、plot()メソッドの引数にxticksを指定します。これにより、データの値をそのまま目盛りラベルとして表示できるため、グラフがより読みやすくなります。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。Pandasを使って、column1というキーを持つデータフレームを作成します。plot()メソッドでデータフレームをプロットし、column1の値をX軸ラベルとして指定します。図を表示するには、show()メソッドを使用します。コード例import pandas as pd fro