如何计算值在 Pandas DataFrame 中出现的频率

如何计算值在 Pandas DataFrame 中出现的频率

已邀请:
我们将使用相同的 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']
})
1.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
2.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

3.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

要回复问题请先登录注册