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

如何在Pandas中基于df.groupby('battery').weight.mean()的结果创建折线图以对比电池尺寸与平均重量?

嘿,作为Python新手能想到用groupby做聚合再可视化,已经迈出很棒的一步啦!我来一步步教你怎么实现这个对比电池尺寸与平均重量的折线图,方法很简单,咱们分步骤来:

第一步:导入必要的库

首先得确保你已经导入了pandas和绘图用的库,比如matplotlib(最常用的基础绘图库),如果想用更美观的seaborn也可以:

import pandas as pd
import matplotlib.pyplot as plt
# 如果想用seaborn的话,再加这行
# import seaborn as sns
第二步:准备/确认你的数据

先给你一个示例数据,方便你测试(你可以替换成自己的真实数据):

data = {
    'battery': ['AA', 'AA', 'AAA', 'AAA', 'AAA', 'C', 'C', 'D'],
    'weight': [23, 25, 11, 10, 12, 60, 62, 135]
}
df = pd.DataFrame(data)
第三步:计算每个电池的平均重量

就是你已经写的那行代码,它会返回一个Series,索引是电池尺寸,值是对应的平均重量:

# 计算每个电池尺寸的平均重量
battery_mean_weight = df.groupby('battery').weight.mean()

# 可以先打印看看结果是否符合预期
print(battery_mean_weight)
# 输出大概是:
# battery
# AA      24.0
# AAA     11.0
# C       61.0
# D      135.0
# Name: weight, dtype: float64
第四步:绘制折线图

这里给你三种常用的方法,选你觉得顺手的就行:

方法1:用pandas自带的plot(最简单)

pandas的Series/DataFrame自带plot方法,一行代码就能搞定绘图,非常适合新手:

# 绘制折线图,marker='o'是给每个数据点加个圆点标记,更清晰
battery_mean_weight.plot(kind='line', marker='o', figsize=(8, 5))

# 给图表加标题和坐标轴标签,让别人能看懂
plt.title('Average Weight by Battery Size')
plt.xlabel('Battery Size')
plt.ylabel('Average Weight (g)')
plt.grid(True)  # 可选,添加网格线更易读

# 显示图表
plt.show()

方法2:用matplotlib手动绘制(更灵活)

如果你想自定义更多细节(比如颜色、线条样式),可以用matplotlib手动绘制:

# 提取x轴(电池尺寸)和y轴(平均重量)的数据
x = battery_mean_weight.index
y = battery_mean_weight.values

# 创建画布和子图
fig, ax = plt.subplots(figsize=(8, 5))

# 绘制折线图,自定义颜色和线条样式
ax.plot(x, y, marker='o', linestyle='-', color='darkblue', linewidth=2)

# 设置标题和标签,还能调整字体大小
ax.set_title('Average Weight by Battery Size', fontsize=12)
ax.set_xlabel('Battery Size', fontsize=10)
ax.set_ylabel('Average Weight (g)', fontsize=10)

# 添加半透明网格线
ax.grid(alpha=0.3)

# 显示图表
plt.show()

方法3:用seaborn绘制(更美观)

如果你想要更精致的图表样式,可以用seaborn,不过需要先把Series转成DataFrame:

# 把聚合结果转成DataFrame,方便seaborn使用
battery_df = battery_mean_weight.reset_index(name='avg_weight')

# 用seaborn绘制折线图
sns.lineplot(data=battery_df, x='battery', y='avg_weight', marker='o', color='green')

# 添加标题和标签
plt.title('Average Weight by Battery Size')
plt.xlabel('Battery Size')
plt.ylabel('Average Weight (g)')
plt.grid(True)

# 显示图表
plt.show()
小提示:调整x轴顺序让图表更合理

注意:如果你的真实数据里电池尺寸的顺序不是逻辑从小到大(比如AAA→AA→C→D),可以手动调整索引顺序,让折线图更直观:

# 手动指定你想要的电池尺寸顺序
desired_order = ['AAA', 'AA', 'C', 'D']
battery_mean_weight = battery_mean_weight.reindex(desired_order)

# 再用上面的方法绘图,x轴就会按你指定的顺序排列啦

如果还有其他问题,随时问哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:24:08