如何计算值在 Pandas DataFrame 中出现的频率
有时,当你使用 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。