计算Pandas数据框架中项目集的频率
在这篇文章中,我们将解释如何在Pandas中计算给定的DataFrame中项目集的频率。使用count()、size()方法、Series.value_counts()和pandas.Index.value_counts()方法,我们可以计算给定DataFrame中项目集的频率数量。在这里,我们将解释几个如何在实践中使用这些函数的例子。
Raw Data:

示例 1:
使用Series.value_counts()。这个方法适用于pandas.Series对象。由于每个DataFrame对象都是一个Series对象的集合,我们可以应用这个方法来获得一列中数值的频率计数。
import pandas as pd
df = pd.DataFrame({
'A': ['Box', 'Color', 'Pencil', 'Eraser',
'Color', 'Pencil', 'Eraser', 'Color',
'Color', 'Eraser', 'Eraser', 'Pencil'],
'B': ['Jammu', 'Kolkata', 'Bihar', 'Gujarat',
'Kolkata', 'Bihar', 'Jammu', 'Bihar',
'Gujarat', 'Jammu', 'Kolkata', 'Bihar']
})
count = df['A'].value_counts()
display(count)
count = df['B'].value_counts()
display(count)
输出:

示例2:使用Pandas dataframe.size()。
它返回一个元素的总数,它通过乘以shape方法返回的行和列来进行比较。
import pandas as pd
df = pd.DataFrame({
'A': ['Box', 'Color', 'Pencil', 'Eraser',
'Color', 'Pencil', 'Eraser', 'Color',
'Color', 'Eraser', 'Eraser', 'Pencil'],
'B': ['Jammu', 'Kolkata', 'Bihar', 'Gujarat',
'Kolkata', 'Bihar', 'Jammu', 'Bihar',
'Gujarat', 'Jammu', 'Kolkata', 'Bihar']
})
freq = df.groupby(['A']).size()
display(freq)
freq = df.groupby(['B']).size()
display(freq)
输出:

例子3:使用Pandas reset_index()。
它是一个重置数据帧索引的方法。 reset_index()方法设置一个从0到数据长度的整数列表作为索引。
import pandas as pd
df = pd.DataFrame({
'A': ['Box', 'Color', 'Pencil', 'Eraser',
'Color', 'Pencil', 'Eraser', 'Color',
'Color', 'Eraser', 'Eraser', 'Pencil'],
'B': ['Jammu', 'Kolkata', 'Bihar', 'Gujarat',
'Kolkata', 'Bihar', 'Jammu', 'Bihar',
'Gujarat', 'Jammu', 'Kolkata', 'Bihar']
})
freq = df.groupby(['A'])['B'].agg('count').reset_index()
display(freq)
freq = df.groupby(['B'])['A'].agg('count').reset_index()
display(freq)
输出:

示例4:使用Pandas dataframe.count()。
它用于计算给定轴上的非NA/null观察值的数量。它也适用于非浮动类型的数据。
import pandas as pd
df = pd.DataFrame({
'A': ['Box', 'Color', 'Pencil', 'Eraser',
'Color', 'Pencil', 'Eraser', 'Color',
'Color', 'Eraser', 'Eraser', 'Pencil'],
'B': ['Jammu', 'Kolkata', 'Bihar', 'Gujarat',
'Kolkata', 'Bihar', 'Jammu', 'Bihar',
'Gujarat', 'Jammu', 'Kolkata', 'Bihar']
})
freq = df.groupby(['A']).count()
display(freq)
freq = df.groupby(['B']).count()
display(freq)
输出:

极客教程