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

如何在Pandas中对DataFrame指定行的列求和并绘制柱状图?

解决步骤:计算指定行的列求和并绘制柱状图

嘿,你的思路方向是对的,但其实不用特意创建“单行掩码”——Pandas本身就提供了简洁的方法来完成列求和与可视化,咱们一步步来实现:

1. 计算目标行的各列总和

首先,假设你已经通过df.iloc[2:4,:]选取了目标行(对应原数据的第3、4周),直接对这个子DataFrame按列求和即可:

# 先定义选中的目标行子集
df_selected = df.iloc[2:4, :]
# 按列求和,axis=0表示沿行方向(即每列的所有行相加)
column_totals = df_selected.sum(axis=0)

这一步会得到一个Series,索引是列名A-E,值为对应列的总和——比如用你提供的数据集计算,结果会是:

A    1506
B     352
C    1317
D    1210
E    1385
dtype: int64

2. 绘制柱状图对比各列

得到求和结果后,直接用Pandas内置的绘图工具,或者结合Matplotlib/Seaborn都可以,这里给出两种常用方案:

方案一:用Pandas直接绘图

import matplotlib.pyplot as plt

# 绘制柱状图
column_totals.plot(kind='bar', color='skyblue')

# 添加图表标签与标题,提升可读性
plt.xlabel('Columns (A-E)')
plt.ylabel('Total Sum')
plt.title('Sum of Selected Weeks by Column')
plt.xticks(rotation=0)  # 让x轴标签水平显示,避免倾斜
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

方案二:用Seaborn绘制更美观的图表

如果想要更精致的可视化效果,可以转成DataFrame后用Seaborn:

import seaborn as sns
import matplotlib.pyplot as plt

# 将Series转换为适合Seaborn的DataFrame格式
totals_df = column_totals.reset_index().rename(columns={'index': 'Column', 0: 'Total'})

# 绘制柱状图
sns.barplot(data=totals_df, x='Column', y='Total', palette='viridis')

# 添加标签与标题
plt.xlabel('Columns (A-E)')
plt.ylabel('Total Sum')
plt.title('Sum of Selected Weeks by Column')
plt.show()

关于“单行掩码”的补充

你提到的“创建单行掩码”其实是不必要的——sum(axis=0)返回的Series已经是我们需要的聚合结果,直接就能用来绘图。如果非要把它转成单行的DataFrame,也可以用column_totals.to_frame().T,但这属于额外操作,对后续绘图没有影响。

内容的提问来源于stack exchange,提问作者Fares K. A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:34