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

解读Python的sns.lineplot、pd.pivot_table与sns.barplot及数值差异原因

图表解读与数值差异原因分析

一、各图表/表的解读

1. 折线图

该折线图以子产品(subproduct)为横轴,销售额(sales)为纵轴,通过不同样式的线条和标记区分产品编码(productcode)。它展示的是每个子产品-产品编码组合下的销售额平均值,能直观对比不同子产品的平均销售表现,以及不同产品编码在各子产品中的均值趋势。

2. 透视表

该透视表按产品编码+子产品的组合分组,对销售额做求和计算后排序得到。它直接呈现了每个产品-子产品组合的总销售额,清晰反映各组合的整体业绩规模,是对应分组下所有记录的销售额加总结果。

3. 柱状图

这是横向柱状图,以子产品为纵轴,销售额为横轴,用颜色区分产品编码。和折线图逻辑一致,它展示的也是每个子产品-产品编码组合的销售额平均值,柱子上的标注就是该均值。深色背景和简化的坐标轴设计,是为了让视觉焦点集中在柱子的对比上。

二、数值差异的核心原因

透视表与图表的数值差异,本质是聚合统计方式不同:

  • 透视表明确指定aggfunc='sum',计算的是每个分组下所有销售额的总和;
  • seaborn的lineplot和barplot默认使用**均值(mean)**作为统计量,展示的是分组内销售额的平均值,而非加总结果。

比如你提供的样例数据里,Godis子产品有6条销售额记录,透视表会把这6个数全部加总,而折线图/柱状图会先计算这6个数的平均值再展示,两者数值自然不同。

如果要让图表和透视表数值匹配,只需在绘图时指定聚合函数为sum:

  • 折线图修改代码:
sns.lineplot(data=df_replace_code3, x='subproduct', y='sales', hue='productcode', markers=True, style='productcode', dashes=False, estimator='sum')
  • 柱状图修改代码:
sns.barplot(y='subproduct', x='sales', data=df_replace_code3, hue='productcode', estimator='sum')

修改后柱状图的标注逻辑也会自动对应总和,最终就能和透视表的数值一致。

内容的提问来源于stack exchange,提问作者Berke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:05:29