如何計算值在 Pandas DataFrame 中出現的頻率
Ahmed Waheed
2023年1月30日
2020年6月9日
有時,當你使用 DataFrame
時,你可能想計算一個值在列中出現的次數,或者換句話說,計算頻率。為此主要使用三種方法。讓我們一一看一下。
df.groupby().count()
Series.value_counts()
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