Python实现按分组汇总价格总和的直方图绘制需求
按分组求和绘制可视化图表的实现思路
核心思路分两步:先对数据按profile_bucket分组计算price的总和,再基于求和结果绘制图表(这里更适合用条形图,因为x轴是离散类别,直方图本质是展示连续数值的分布,用在离散类别场景不够贴合)。
步骤1:数据分组求和
用Pandas可以快速完成分组聚合操作:
import pandas as pd # 示例数据(实际可通过pd.read_csv从文件读取,注意设置对应分隔符) df = pd.DataFrame({ 'profile_bucket': ['a', 'b', 'c', 'a', 'c'], 'price': [10, 15, 5, 7, 20] }) # 按profile_bucket分组,计算price的总和 sum_price = df.groupby('profile_bucket')['price'].sum().reset_index()
执行后sum_price会得到每个分组的总价:
| profile_bucket | price |
|---|---|
| a | 17 |
| b | 15 |
| c | 25 |
步骤2:绘制可视化图表
用Matplotlib绘制条形图
import matplotlib.pyplot as plt plt.bar(sum_price['profile_bucket'], sum_price['price']) plt.xlabel('Profile Bucket') plt.ylabel('Total Price') plt.title('Total Price per Profile Bucket') plt.show()
用Seaborn绘制(更简洁)
如果用Seaborn,甚至可以直接基于原始数据绘制,无需提前分组:
import seaborn as sns sns.barplot(x='profile_bucket', y='price', data=df, estimator=sum) plt.xlabel('Profile Bucket') plt.ylabel('Total Price') plt.title('Total Price per Profile Bucket') plt.show()
补充说明
如果一定要用“直方图”的说法,上述条形图的呈现效果已经能满足你展示分组总价的需求,只是从图表定义来说,离散类别的聚合值用条形图更规范。
内容的提问来源于stack exchange,提问作者lincolnab
相关产品推荐
相关产品推荐

