如何計算值在 Pandas DataFrame 中出現的頻率

  1. df.groupby().count() 方法
  2. Series.value_counts() 方法
  3. df.groupby().size() 方法

有時,當你使用 DataFrame 時,你可能想計算一個值在列中出現的次數,或者換句話說,計算頻率。為此主要使用三種方法。讓我們一一看一下。

  1. df.groupby().count() 2.Series.value_counts() 3.df.groupby().size()

在以下各節中,我們將使用相同的 DataFrame,如下所示:

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

df.groupby().count() 方法

如果要計算單個列的頻率,則此方法最好。

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

freq = df.groupby(['A']).count() 
print(freq)

freq = df.groupby(['B']).count() 
print(freq)

輸出:

     B
A     
jim  4
sal  3
tom  2
   A
B   
a  4
b  5

Series.value_counts() 方法

由於每個 DataFrame 物件都是 Series 物件的集合,因此此方法最好用於 pandas.Series 物件。

現在使用 Series.values_counts() 函式

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

freq = df['A'].value_counts() 
print(freq) 

freq = df['B'].value_counts() 
print(freq) 

輸出:

jim    4
sal    3
tom    2
Name: A, dtype: int64
b    5
a    4
Name: B, dtype: int64

df.groupby().size() 方法

以上兩種方法不能用於計算多列的頻率,但是我們可以同時對多列使用 df.groupby().size()

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

freq = df.groupby(['A', 'B']).size() 
print(freq)

輸出:

A    B
jim  a    2
     b    2
sal  a    1
     b    2
tom  a    1
     b    1
dtype: int64

相關文章 - Pandas DataFrame

  • 如何在 Pandas DataFrame 中建立一個空列
  • 在 Pandas 中對 DataFrame 進行列切片