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

【Python】Pandasのvalue_counts()で値の名前と出現回数(カウント)を抽出する方法

Pandasのvalue_counts()で値の名前とカウントを抽出するには?

Pandasのvalue_counts()メソッドを使うと、SeriesやDataFrameの各列に含まれる一意な値とその出現回数を簡単に取得できます。戻り値は出現回数の降順に並べ替えられたSeriesとなっており、インデックスに値の名前、値にカウント数が格納されます。

ここでは、実際にDataFrameを作成し、特定の列から値の名前とカウントを抽出する手順を解説します。

1. サンプルDataFrameの作成

まず、4つの列を持つDataFrameを作成します。

import pandas as pd

# DataFrameの作成
dataFrame = pd.DataFrame({
   "Car": ['BMW', 'Mustang', 'Tesla', 'Mustang', 'Mercedes', 'Tesla', 'Audi'],
   "Cubic Capacity": [2000, 1800, 1500, 2500, 2200, 3000, 2000],
   "Reg Price": [7000, 1500, 5000, 8000, 9000, 6000, 1500],
   "Units Sold": [200, 120, 150, 120, 210, 250, 220]
})

2. 特定の列にvalue_counts()を適用する

「Car」列の値の名前とカウントを取得するには、次のように記述します。

res = dataFrame['Car'].value_counts()

同様に、「Units Sold」列の場合は以下のようになります。

res = dataFrame['Units Sold'].value_counts()

完全なサンプルコード

以下に全体のコードを示します。

import pandas as pd

# DataFrameの作成
dataFrame = pd.DataFrame({
   "Car": ['BMW', 'Mustang', 'Tesla', 'Mustang', 'Mercedes', 'Tesla', 'Audi'],
   "Cubic Capacity": [2000, 1800, 1500, 2500, 2200, 3000, 2000],
   "Reg Price": [7000, 1500, 5000, 8000, 9000, 6000, 1500],
   "Units Sold": [200, 120, 150, 120, 210, 250, 220]
})

print("DataFrame...\n", dataFrame)

# Car列の値の名前とカウントを取得
res = dataFrame['Car'].value_counts()
print("\nCar列の値の名前とカウント:\n", res)

# Units Sold列の値の名前とカウントを取得
res = dataFrame['Units Sold'].value_counts()
print("\nUnits Sold列の値の名前とカウント:\n", res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame ...
        Car   Cubic Capacity   Reg Price   Units Sold
0       BMW              2000        7000          200
1   Mustang              1800        1500          120
2     Tesla              1500        5000          150
3   Mustang              2500        8000          120
4  Mercedes              2200        9000          210
5     Tesla              3000        6000          250
6      Audi              2000        1500          220

Car列の値の名前とカウント:
Mustang     2
Tesla       2
Audi        1
BMW         1
Mercedes    1
Name: Car, dtype: int64

Units Sold列の値の名前とカウント:
120    2
150    1
220    1
210    1
250    1
200    1
Name: Units Sold, dtype: int64

ポイントまとめ

  • value_counts()は、指定した列の一意な値ごとの出現回数を降順で返します。
  • 結果のSeriesでは、インデックスが「値の名前」、値が「カウント数」に対応しています。
  • 引数にascending=Trueを指定すると昇順に並べ替えられ、normalize=Trueを指定すると出現割合(比率)を取得できます。

このようにvalue_counts()を活用すれば、カテゴリデータの分布や頻度分析を簡単に行うことができます。

  1. Python Pandas:read_csvのskipinitialspaceでCSV読み込み時の先頭スペースをスキップする方法

    PandasでCSVの先頭スペースをスキップするには?PandasでDataFrameを読み込む際、データの先頭にある余分な空白(初期スペース)を取り除きたい場合は、read_csv()メソッドのskipinitialspaceパラメータを使用します。このパラメータをTrueに設定すると、区切り文字(カンマなど)の直後にある空白が自動的にスキップされます。CSVファイルの中には、カンマの後に不要なスペースが混ざっているケースが少なくありません。そのまま読み込むと、列名や値の先頭に空白が残り、条件検索やグループ化の際にデータが正しく一致しない原因となります。skipinitialspace=Tr

  2. 【Python】datetimeオブジェクトから月と日だけを抽出して表示する方法

    Pythonでdatetimeオブジェクト(日時データ)から「月」と「日」だけを抽出してグラフに表示したい場合、matplotlibが提供するDateFormatter()クラスを利用すると簡単に実現できます。この記事では、実際のコード例とともに具体的な手順をわかりやすく解説します。実装の手順図(figure)のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。2次元のサイズ変更可能な表形式データを持つデータフレームdfを作成します。figureとサブプロットの一式を作成します。plot()メソッドを使ってデータフレームをプロットします。X軸のフォーマッターを設定し、月