1个图中的多个图使用for循环

时间:2017-06-15 11:56:39

标签: python pandas matplotlib

我已经获得了以下格式的数据,而我想要做的是:

1)遍历区域中的每个值 2)对于每个区域,绘制聚合(跨类别)销售数量的时间序列。

  

日期|地区|类别|销售
  2016年1月1日|美国|家具| 1个
  2016年1月1日|美国|衣服| 0
  2016年1月1日|欧洲|家具| 2
  2016年1月1日|欧洲|衣服| 0
  2016年1月2日|美国|家具| 3
  2016年1月2日|美国|衣服| 0
  2016年1月2日|欧洲|家具| 4
  2016年1月2日|欧洲|衣服| 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 个答案:

答案 0 :(得分: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()