在一个图中使用for循环绘制多个图形

3
我有以下格式的数据,我想做的是:
1)循环遍历每个地区的值
2)对于每个地区,绘制一个聚合(跨类别)销售数量的时间序列图。
日期 | 地区 | 类别 | 销售额
01/01/2016 | 美国 | 家具 | 1
01/01/2016 | 美国 | 服装 | 0
01/01/2016 | 欧洲 | 家具 | 2
01/01/2016 | 欧洲 | 服装 | 0
01/02/2016 | 美国 | 家具 | 3
01/02/2016 | 美国 | 服装 | 0
01/02/2016 | 欧洲 | 家具 | 4
01/02/2016 | 欧洲 | 服装 | 0
图表应该像附件中的Excel表格一样。

enter image description here

然而,如果我尝试使用以下Python代码进行操作,会得到多个图表,而我真正想要的是所有线条显示在一个图形中。
Python代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv(r'C:\Users\wusm\Desktop\Book7.csv')


plt.legend()
for index, group in df.groupby(["Region"]):
    group.plot(x='Date',y='Sales',title=str(index))

plt.show()

除了重新格式化数据外,是否有人能够提供如何将图形合并到一个图中的建议?

1个回答

3
你可以使用来进行操作:pivot_table
df = df.pivot_table(index='Date', columns='Region', values='Sales', aggfunc='sum')
print (df)
Region      Europe  USA
Date                   
01/01/2016       2    1
01/02/2016       4    3

使用 groupby + sum + unstack 可以实现数据的分组汇总和展示:

df = df.groupby(['Date', 'Region'])['Sales'].sum().unstack(fill_value=0)
print (df)
Region      Europe  USA
Date                   
01/01/2016       2    1
01/02/2016       4    3

然后使用DataFrame.plot函数。

df.plot()

很高兴能帮忙,祝你周末愉快! - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接