Pandas Series.value_counts() 函式

Suraj Joshi 2023年1月30日 2020年6月17日
  1. pandas.Series.value_counts() 語法
  2. 示例程式碼:使用 Series.value_counts() 方法計算 Pandas Series 中唯一元素的頻率
  3. 示例程式碼:在 Series.value_counts() 方法中設定 normalize=True 來獲得元素的相對頻率
  4. 示例程式碼:在 Series.value_counts() 方法中設定 ascending=True,根據頻率值按升序排列元素
  5. 示例程式碼:在 Series.value_counts() 方法中設定 bins 引數,獲得位於半開分割槽的值的計數
  6. 示例程式碼:在 Series.value_counts() 方法中設定 dropna=FalseNaN 計數
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)或不對系列物件進行排序(sort=False)
ascending 布林型。按升序(ascending=True)或降序(ascending=False)排序
bins 整數。Series 物件的數值範圍被劃分的分割槽數
dropna 布林型。包括 NaN(dropna=False)的計數或不包括 NaN(dropna=True)的計數

返回值

它返回一個由唯一值的計陣列成的 Series 物件。

示例程式碼:使用 Series.value_counts() 方法計算 Pandas 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)

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 

Series 物件 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

Series 物件 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

它將 Series,即 X 列中的數值範圍分為三部分,並返回每個半開區間中的數值計數。

示例程式碼:在 Series.value_counts() 方法中設定 dropna=FalseNaN 計數

如果我們在 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 值的數量。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Pandas Series