【Python】pandas 如何实现 excel 中的汇总行?
  BhYoICNPeXOn 2023年11月13日 22 0


最近群里小伙伴提出了几个问题,如何用pandas实现execl中的汇总行。

关于这个问题,群里展开了激烈的讨论,最终经过梳理总结出了以下两个解决方法。一种是当做透视时直接使用参数margins,另一种是当无透视时手动造出汇总行。

以下是两种方法的案例,已经收集到了padnas进阶百题库👇中。完整手册可以戳pandas进阶题库了解获取。



【Python】pandas 如何实现 excel 中的汇总行?_数据挖掘

pivot_table

问题(群成员"浮生如梦"):

我想统计一月到十二月的所有数据应该怎么写呢?



【Python】pandas 如何实现 excel 中的汇总行?_python_02

解决方法

  • 用法:sum()pivot_table

如果要对数据按行方向求和,直接使用sum()函数即可,设置参数axis=1(默认是axis=0列方向对列数据求和),然后将横向求和结果赋给一个新的字段。此例中为求和,其他统计方式如mean、max、min等均同理。

# 生成测试数据
df = pd.DataFrame(np.random.randint(10,100,(9,12)),
                  columns=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'])
# 横向求和
df['total'] = df.sum(axis=1)



【Python】pandas 如何实现 excel 中的汇总行?_机器学习_03

此时已得到行方向的求和,如果我们想继续计算列方向求和并显示出来如何操作呢?可以借助pivot_table来实现,设置参数margins=True

pd.pivot_table(df, index=df.index, aggfunc='sum', margins=True)



【Python】pandas 如何实现 excel 中的汇总行?_excel_04

groupby+concat

问题(群成员"张晶"):

pandas里面如何实现类似excel中的汇总行?

kv = {'Name': {0: 'John', 1: 'Mack', 2: 'Lilei', 3: 'Kevin', 4: 'Alin', 5: 'Bob'},
 'Team': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'C', 5: 'C'},
 'Jan': {0: 9, 1: 9, 2: 8, 3: 10, 4: 7, 5: 9},
 'Feb': {0: 10, 1: 7, 2: 8, 3: 7, 4: 6, 5: 8},
 'Mar': {0: 8, 1: 9, 2: 7, 3: 8, 4: 8, 5: 7},
 'Apri': {0: 8, 1: 7, 2: 6, 3: 7, 4: 6, 5: 8}}
df = pd.DataFrame(kv)



【Python】pandas 如何实现 excel 中的汇总行?_python_05

解决方法

用法:groupbyconcatsumtransform

该方法通过几种用法的组合间接实现了行和列数据汇总。

  • 对列数据的汇总求和比较取巧,使用groupby实现了对整列数据求和,求和sum函数中需设置numeric_only参数,只对数值求和。得到列汇总结果后将其与原数据进行concat纵向拼接。
  • 对行数据求和可以直接使用sum函数,通过axis=1指定横向求和。
# 增加列汇总数据
total = df.groupby(lambda _: '总计').sum(numeric_only=True)
# 与原数据纵向拼接
df_total = pd.concat([df,total]).fillna('/')
# 对原数据数值类型横向求和
df_total['total'] = df_total.sum(numeric_only=True,axis=1)
df_total



【Python】pandas 如何实现 excel 中的汇总行?_excel_06

如果想要对Team进行分组求和,可以通过transform实现组合求和并添加为一个新的求和列。

# 分组内求和
df_total['team_total'] = df_total.groupby(['Team'])['total'].transform('sum')
df_total



【Python】pandas 如何实现 excel 中的汇总行?_机器学习_07

以上是本次分享内容。


- end -





【Python】pandas 如何实现 excel 中的汇总行?_excel_08






【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
BhYoICNPeXOn