在Pandas数据框架中获取一个列的频率计数
给定一个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)
输出: