Python Pandas按国家统计总行数并单值可视化的问题求助
解决Pandas分组统计后绘图显示多列的问题
嗨,我明白你的需求啦——你现在的问题是groupby('Country').count()会返回每个分组下所有列的非缺失值统计数,所以绘图时每个国家会对应多个柱子。要实现类似R中summarize(Total = n())的单值汇总效果,有几种简单的解决方法:
方法1:指定单列进行统计
直接在groupby后选择某一列(比如Country本身,或者任何没有缺失值的列)执行count(),这样结果会是一个Series(只有一列数据),绘图时就只会显示每个国家的单条柱子:
# 选择Country列统计行数(等价于统计每个国家的总行数) newData = myData.groupby('Country')['Country'].count() newData.plot(kind='bar', figsize=(15, 10))
方法2:使用size()方法(最接近R的n())
size()方法会直接统计每个分组的总行数,不管列中是否有缺失值,这和R里的n()功能完全一致:
# size()返回每个国家对应的总行数 newData = myData.groupby('Country').size() newData.plot(kind='bar', figsize=(15, 10))
方法3:用agg()自定义汇总列名
如果你想明确指定汇总结果的列名(比如叫Total),可以用agg()方法,写法更贴近R的summarize语法:
# 自定义汇总列名Total,统计每个国家的总行数 newData = myData.groupby('Country').agg(Total=('Country', 'count')) newData.plot(kind='bar', figsize=(15, 10))
小提示
count()统计的是指定列的非缺失值数量,如果你的数据中某列存在缺失,结果会比总行数少;size()统计的是分组的总行数,不管列是否有缺失,更适合替代R的n()。
内容的提问来源于stack exchange,提问作者123josh123
相关产品推荐
相关产品推荐

