【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()を活用すれば、カテゴリデータの分布や頻度分析を簡単に行うことができます。
-
Python Pandas:read_csvのskipinitialspaceでCSV読み込み時の先頭スペースをスキップする方法
PandasでCSVの先頭スペースをスキップするには?PandasでDataFrameを読み込む際、データの先頭にある余分な空白(初期スペース)を取り除きたい場合は、read_csv()メソッドのskipinitialspaceパラメータを使用します。このパラメータをTrueに設定すると、区切り文字(カンマなど)の直後にある空白が自動的にスキップされます。CSVファイルの中には、カンマの後に不要なスペースが混ざっているケースが少なくありません。そのまま読み込むと、列名や値の先頭に空白が残り、条件検索やグループ化の際にデータが正しく一致しない原因となります。skipinitialspace=Tr
-
【Python】datetimeオブジェクトから月と日だけを抽出して表示する方法
Pythonでdatetimeオブジェクト(日時データ)から「月」と「日」だけを抽出してグラフに表示したい場合、matplotlibが提供するDateFormatter()クラスを利用すると簡単に実現できます。この記事では、実際のコード例とともに具体的な手順をわかりやすく解説します。実装の手順図(figure)のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。2次元のサイズ変更可能な表形式データを持つデータフレームdfを作成します。figureとサブプロットの一式を作成します。plot()メソッドを使ってデータフレームをプロットします。X軸のフォーマッターを設定し、月