我从Excel导入了以下示例DataFrame,其中columns = Months和rows =每个月的值(主要是每个月的销售额):
Jan 2017 Feb 2017 March 2017.......Dec 2017
0 10 15 12 13
1 2 4 5 6
我想创建一个折线图,其中日期列为x轴,每个月的值为y轴。这在excel中很容易,但是50行以上非常耗时。
这是我的尝试方式:
x = ['Jan 2017','Feb 2017', 'Mar 2017', 'Apr 2017', 'May 2017', 'Jun 2017', 'Jul 2017','Aug 2017', 'Sep 2017', 'Oct 2017', 'Nov 2017', 'Dec 2017']
y = Az.iloc[0]
plt.scatter(x,y, c='g')
plt.show()
不是我真正想要的......有关如何使这项工作的任何建议?感谢。
答案 0 :(得分:0)
您需要转置您的数据,以便它是“整洁的”#34; - 每一行应该是不同的日期(观察),每列应该是不同类型的数据(例如小部件1与小部件2的计数)。
在Pandas数据框中读取数据,如:
import pandas as pd
%matplotlib notebook #use this line if you're working in a Jupyter notebook, or omit
df = pd.read_excel('File.xlsx', sheetname='Sheet1')
pretty_df=df.transpose()
pretty_df.plot()
如果您发布实际数据框的一部分,则可以更轻松地提供帮助。
这里有一些看起来像的东西 -
#Creating your dataset
x = ['Jan 2017','Feb 2017', 'Mar 2017', 'Apr 2017', 'May 2017', 'Jun 2017', 'Jul 2017','Aug 2017', 'Sep 2017', 'Oct 2017', 'Nov 2017', 'Dec 2017']
widget1 = pd.Series(np.random.random(len(x)))
widget2=pd.Series(np.random.random(len(x)))
df=pd.concat([widget1, widget2], axis=1)
df_like_your_problem=df.transpose()
df_like_your_problem.columns=x #this gets us to your starting point of ugly data. You would get here via pd.read_excel()
df_pretty=df_like_your_problem.transpose()
创建一个日期为索引的数据框:
Jan 2017 0.315193 0.626343
Feb 2017 0.525528 0.008994
Mar 2017 0.645849 0.272264
从那里开始,将索引设置为pandas DateTime对象,然后使用pandas plot(df_pretty.plot())的内置方法来获取所需内容是非常简单的。