使用pandas绘图

需求:按照A,B列分组,S列=sum©/sum(D),,使用matplotlib将结果绘制多条曲线图,x轴是A列,y轴是计算出来的s列,每个B代表一条线

import pandas as pd
from io import StringIO
import matplotlib.pyplot as plt

csv_data = """
A,B,C,D
1,1,1,1
1,2,3,4
2,1,3,3
2,3,1,1
2,1,5,5
2,3,6,1
"""
#
# data_file = StringIO(csv_data)
# df = pd.read_csv(data_file)
file_path = 'data.csv'

# 读取 CSV 文件
df = pd.read_csv(file_path)
grouped = df.groupby(['A', 'B']).agg({'C': 'sum', 'D': 'sum'}).reset_index()
grouped['S'] = grouped['C'] / grouped['D']
grouped.sort_values('A', inplace=True)

plt.figure(figsize=(10, 6))

for key, group in grouped.groupby('B'):
    print(key,group)
    print("===")
    plt.plot(group['A'], group['S'], label=f'B={key}')

plt.title('Sum(C)/Sum(D) by A Grouped by B')
plt.xlabel('A')
plt.ylabel('S')
plt.legend()
plt.grid(True)

# 展示图表
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值