如何针对Pandas

时间:2018-01-30 17:10:07

标签: pandas

我从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()

不是我真正想要的......有关如何使这项工作的任何建议?感谢。

1 个答案:

答案 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())的内置方法来获取所需内容是非常简单的。