获取 Pandas DataFrame 中列的频率计数
给定一个 Pandas 数据框,我们需要在该数据框的一列或多列中找到每个项目的频率计数。这可以通过多种方式实现:
方法 #1:使用Series.value_counts()
此方法适用于 pandas.Series 对象。由于每个 DataFrame 对象都是 Series 对象的集合,因此我们可以应用此方法来获取一列中值的频率计数。
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g',
'bar', 'bar', 'foo', 'bar'],
'B': ['a', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'b'] })
# frequency count of column A
count = df['A'].value_counts()
print(count)
输出:
方法 #2:使用GroupBy.count()
此方法可用于计算对象在单列上的频率。在一列上对 DataFrame 对象进行分组后,我们可以对生成的groupby 对象应用count()
方法来获取包含频率计数的 DataFrame 对象。
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({ 'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g',
'bar', 'bar', 'foo', 'bar'],
'B': ['a', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'b'] })
# Multi-column frequency count
count = df.groupby(['A']).count()
print(count)
输出:
方法#3:使用GroupBy.size()
此方法可用于计算对象在单列或多列上的频率。在一列或多列上对 DataFrame 对象进行分组后,我们可以对生成的groupby 对象应用size()
方法以获取包含频率计数的 Series 对象。
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({ 'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g',
'bar', 'bar', 'foo', 'bar'],
'B': ['a', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'b'] })
# Multi-column frequency count
count = df.groupby(['A', 'B']).size()
print(count)
输出: