在python下使用pandas,如何使用matplotlib绘制日期?

时间:2016-12-27 14:22:12

标签: python pandas matplotlib

我有一个带有两列的datframe bankdat,一列是str格式的日期,另一列是浮点数。我想用pandas和matplotlib生成一个图,x轴是日期,y轴是浮点数。我使用

将字符串转换为日期
bankdat['Buchungstag'] = pd.to_datetime(bankdat['Buchungstag'])

当我现在尝试使用

绘制我的数据框时
bankdat.plot()
plt.show()

我在x轴上得到数字而不是日期:

example

我做错了什么?谢谢您的帮助 PS:我是编码和堆栈溢出的新手,如果你指出我的错误,我将非常感激

编辑:感谢您的建议。不幸的是,使用set index会产生这个图:fig2。我使用的分布不同于建议吗?

EDIT2。 我使用

从csv文件获取数据帧
ausgaben = pd.read_csv('asd.csv', encoding = 'ISO-8859-1',sep=';', skiprows=6,usecols=[0,7])

之后,我使用

添加第一行
bankdat = pd.DataFrame(np.array([[np.nan, '10000']]), columns=[ausgaben.columns[0], ausgaben.columns[1]]).append(ausgaben)

感谢您指出日期排序,我甚至没有进入"思考天气我的数据有意义"阶段。数据框如下所示: example 3,并导出到csv给出

,Betrag (EUR),Kontostand
,4130.96,4130.96
2016-12-23,-65.0,4065.96
2016-12-20,520.0,4585.96
2016-12-19,-29.5,4556.46
2016-09-12,-1000.0,3556.46

按照Dmitry Polonskiy的建议解决:"可能是您将NAT作为日期列中的第一个日期。试试这个bankdat.Buchungstag.shift(1).plot()"。谢谢yoyur的帮助!

1 个答案:

答案 0 :(得分:0)

bankdat.set_index(['Buchungstag'], inplace = True)
bankdat.index.name = None

bankdat.Buchungstag.plot(figsize=(10,6), title = 'Title', fontsize = 16)