You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用链式操作实现Pandas分组、过滤及饼图绘制并简化代码?

Pandas链式操作实现分组聚合、占比过滤与饼图绘制

优化后的链式代码

import pandas as pd
import matplotlib.pyplot as plt

# 链式完成分组、占比计算、小分组合并、排序与绘图
(
    df.groupby('Publisher')['Global_Sales']
    .sum()
    .sort_values(ascending=False)
    .pipe(lambda s: s / s.sum())  # 计算单出版商销量占总销量的比例
    .pipe(lambda s: s.where(s >= 0.02, 'Other'))  # 占比<2%的归为"Other"
    .groupby(level=0)  # 按当前索引(含Other)重新分组求和
    .sum()
    .sort_values(ascending=False)
    .plot(
        kind='pie',
        figsize=(10,5),
        legend=False,
        title='最具盈利能力的出版商'
    )
    .set_ylabel('')  # 移除冗余的y轴标签
)
plt.show()

代码优化说明

  1. 移除冗余中间变量:全程用链式调用替代原代码中多个临时变量(Pb_Sales、total、index_list等),逻辑更连贯
  2. 替换for循环为矢量化操作:用Series.where()替代原手动遍历索引的for循环,处理大数据集时效率提升数倍
  3. 链式操作拆解:
    • 按出版商分组汇总全球销量并降序排序
    • 用pipe()传递Series,计算销量占比
    • 批量替换占比低于2%的出版商为"Other"
    • 重新分组合并"Other"的销量并再次排序
    • 直接链式调用绘图,同步设置图表参数

原代码的问题点改进

  • 原代码手动遍历索引修改的方式不仅冗余,还容易出现索引错位问题
  • 链式调用让每一步数据转换逻辑清晰,便于维护和调试

内容的提问来源于stack exchange,提问作者just a tw highschooler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:57:20