Pandas Series.value_counts()関数

Suraj Joshi 2023年1月30日
  1. pandas.Series.value_counts() の構文:
  2. コード例:Series.value_counts() メソッドを使用して Pandas シリーズの一意の要素の頻度をカウントする
  3. コード例:要素の相対頻度を取得するために Series.value_counts() メソッドで normalize = True を設定する
  4. コード例:Series.value_counts() メソッドで ascending = True を設定して、頻度値に基づいて要素を昇順で並べ替える
  5. コード例:Series.value_counts() メソッドで bins パラメーターを設定して、ハーフオープンビンにある値の数を取得する
  6. コード例:Series.value_counts() メソッドの dropna = False を設定して、NaN をカウントする
Pandas Series.value_counts()関数

pandas.Series.value_counts() メソッドは、Series の各一意の要素の出現回数をカウントします。

pandas.Series.value_counts() の構文:

Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)

パラメーター

normalize ブール。一意の値の相対頻度(normalize = True)または一意の値の絶対頻度(normalize = False)。
sort ブール。頻度に基づいて要素を並べ替える(sort = True)または Series オブジェクトを並べ替えない(sort = False
ascending ブール。値を昇順(ascending = True)または降順(ascending = False)で並べ替えます
bins 整数。Series オブジェクトの値の範囲が分割されるパーティションの数
dropna ブール。NaNdropna = False)のカウントを含めるか、NaNdropna = True)のカウントを除外します

戻り値

一意の値の数で構成される Series オブジェクトを返します。

コード例:Series.value_counts() メソッドを使用して Pandas シリーズの一意の要素の頻度をカウントする

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

absolute_counts=df["X"].value_counts()

print("Frequencies of elements of X column:")
print(absolute_counts)

出力:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Frequencies of elements of X column:
3.0    2
2.0    1
1.0    1
Name: X, dtype: int64 

absolute_counts シリーズオブジェクトは、Series.value_counts() メソッドを使用して列 X の一意の各要素の数を提供します。

Series.value_counts() はデフォルトでは NaN をカウントしません。次のセクションでその数え方を紹介します。

コード例:要素の相対頻度を取得するために Series.value_counts() メソッドで normalize = True を設定する

Series.value_counts() メソッドで normalize = True を設定すると、Series オブジェクトのすべての一意の要素の相対頻度が取得されます。

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

relative_counts=df["X"].value_counts(normalize=True)

print("Relative Frequencies of elements of X column:")
print(relative_counts)

出力:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Frequencies of elements of X column:
3.0    0.50
2.0    0.25
1.0    0.25
Name: X, dtype: float64

relative_counts シリーズオブジェクトは、列 X の各一意の要素の相対頻度を示します。

相対頻度は、すべての絶対頻度値を頻度値の合計で割ることによって得られます。

コード例:Series.value_counts() メソッドで ascending = True を設定して、頻度値に基づいて要素を昇順で並べ替える

Series.value_counts() メソッドで ascending = True を設定すると、要素が頻度値に基づいて昇順でソートされた Series オブジェクトが取得されます。

デフォルトでは、Series.value_counts() メソッドから返された Series オブジェクトの値は、頻度値に基づいて降順で並べ替えられます。

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

sorted_counts=df["X"].value_counts(ascending=True)
print("Frequencies of elements of X column:")
print(sorted_counts)

出力:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Frequencies of elements of X column:
1.0    1
2.0    1
3.0    2
Name: X, dtype: int64

X 列の一意の各オブジェクトのカウントを、頻度値を昇順でソートして示します。

コード例:Series.value_counts() メソッドで bins パラメーターを設定して、ハーフオープンビンにある値の数を取得する

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3, 4, 5],
                   'Y': [4, np.nan, 8, np.nan, 3, 2, 1]})
print("DataFrame:")
print(df)

counts=df["X"].value_counts(bins=3)
print("Frequencies:")
print(counts)

出力:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
5  4.0  2.0
6  5.0  1.0
Frequencies:
(3.667, 5.0]      2
(2.333, 3.667]    2
(0.995, 2.333]    2
Name: X, dtype: int64

bins の値の範囲、つまり X 列を 3つの部分に分割し、半分開いた各ビンにある値の数を返します。

コード例:Series.value_counts() メソッドの dropna = False を設定して、NaN をカウントする

Series.value_counts() メソッドで dropna = false を設定すると、NaN 値の数も取得します。

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

counts=df["Y"].value_counts(dropna=False)

print("Frequencies:")
print(counts)

出力:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Frequencies:
NaN    2
3.0    1
8.0    1
4.0    1
Name: Y, dtype: int64

DataFrameY 列の各要素の数と NaN 値の数を示します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas Series