如何在Pandas中根据列绘制行

如何在Pandas中根据列绘制行,pandas,Pandas,我从Excel导入了以下示例数据框,其中列=月,行=每月的值(基本上是每月的销售额): 我想创建一个折线图,其中日期列作为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 20

我从Excel导入了以下示例数据框,其中列=月,行=每月的值(基本上是每月的销售额):

我想创建一个折线图,其中日期列作为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和小部件2的计数)

对读取数据的数据帧执行以下操作:

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

欢迎使用StackOverflow!为了得到好的回复,请阅读(特别是)相关内容。嘿@Mike,如果你喜欢我的答案,请接受,或者用不起作用的内容进行评论。我以前从未得到过一个被接受的答案,所以这对我来说意义重大。谢谢让你的问题像这样坐着,这不是一个好习惯……那么@Mike。。。
Jan 2017  0.315193  0.626343
Feb 2017  0.525528  0.008994
Mar 2017  0.645849  0.272264