需求:按照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()