Python 使用Pandas和datetime格式打印

Python 使用Pandas和datetime格式打印,python,pandas,datetime,matplotlib,Python,Pandas,Datetime,Matplotlib,我有一个数据框,只有两列,日期和ClosingPrice。我正在尝试使用df.plot()绘制它们,但不断出现以下错误: ValueError:视图限制最小值-36785.37852小于1,是无效的Matplotlib日期值。如果将非日期时间值传递给具有日期时间单位的轴,则通常会发生这种情况 我在matplotlib中找到了关于此的文档,但其中说明了如何确保格式为datetime。下面是我必须确保格式为datetime的代码,并且在尝试绘图之前打印每列的数据类型 df.Date = pd.to_

我有一个数据框,只有两列,日期和ClosingPrice。我正在尝试使用df.plot()绘制它们,但不断出现以下错误:

ValueError:视图限制最小值-36785.37852小于1,是无效的Matplotlib日期值。如果将非日期时间值传递给具有日期时间单位的轴,则通常会发生这种情况

我在matplotlib中找到了关于此的文档,但其中说明了如何确保格式为datetime。下面是我必须确保格式为datetime的代码,并且在尝试绘图之前打印每列的数据类型

df.Date = pd.to_datetime(df.Date)

print(df['ClosingPrice'].dtypes)
print(df['Date'].dtypes)
这些打印语句的输出为:

浮动64 日期时间64[ns]

我不确定问题出在哪里,因为我正在打印前验证数据类型。以下是数据集的前几行的外观:

日期关闭价格
0    2013-09-10       64.7010
1    2013-09-11       61.1784
2    2013-09-12       61.8298
3    2013-09-13       60.8108
4    2013-09-16       58.8776
5    2013-09-17       59.5577
6    2013-09-18       60.7821
7    2013-09-19       61.7788

感谢您的帮助

在看到更多人来到这里后,编辑2。为了让python新手明白,您应该首先导入pandas,以便下面的代码能够工作:

import pandas as pd
编辑1:(简短快速回答)

如果您不想删除原始索引(在阅读了下面的原始和长答案后,这是有意义的),您可以:

df[['Date','ClosingPrice']].plot('Date', figsize=(15,8))
# single [ ] transforms the column into series, double [[ ]] into DataFrame
df[['pct_change_1']].plot(figsize=(15,8)) 
原汁原味的长答案:

首先尝试将索引设置为日期时间列:

df.set_index('Date', inplace=True, drop=True)
为了确保这一点,请尝试设置索引数据类型(编辑:这可能不像以前那样需要):

然后把它画出来

df.plot()
如果这解决了问题,那是因为当您从DataFrame对象使用
.plot()
时,X轴将自动成为DataFrame的索引

如果您的数据框有一个Datetimeindex和另外两列(例如
['Currency','pct\u change\u 1']
),并且您只想绘制其中一列(可能
pct\u change\u 1
),您可以:

df[['Date','ClosingPrice']].plot('Date', figsize=(15,8))
# single [ ] transforms the column into series, double [[ ]] into DataFrame
df[['pct_change_1']].plot(figsize=(15,8)) 

其中
figsize=(15,8)
您正在设置绘图的大小
(宽度、高度)

以下是一个简单的解决方案:

  my_dict = {'Date':['2013-09-10', '2013-09-11', '2013-09-12', '2013-09-13', '2013-09-16', '2013-09-17', '2013-09-18',
     '2013-09-19'], 'ClosingPrice': [ 64.7010, 61.1784, 61.8298, 60.8108, 58.8776, 59.5577, 60.7821, 61.7788]}

  df = pd.DataFrame(my_dict)
  df.set_index('Date', inplace=True)
  df.plot()

我对策划这件事没有意见。您可以发布导致错误的代码行吗?它发生在具有df.plot()的行上。没有别的事了。如果您愿意,我可以提供更多的代码?因此我添加了第一行,但它似乎删除了我想说的数据。我在您推荐的行之后打印数据帧,它显示无。除了此错误之外:df.plot()AttributeError:'NoneType'对象没有属性'plot',我不确定pandas是否更改了某些内容,但我将您的第一行更改为df=df.set_index('Date')。而且它工作得很好,策划得很好。谢谢你的帮助。我刚刚试过你的上一次编辑,也成功了。哦,这是因为我声明了
df=
不需要
inplace=True
。如果您只需键入
df.set\u index('Date',inplace=True)
。或者是因为我们运行的是不同的python版本(我是最新版本)。您上次的编辑对我df['Date','ClosingPrice']]有效。plot('Date',figsize=(15,8)),很高兴知道,可能是因为您说哪个列必须是“.plot()”处的X轴,所以它没有考虑df的索引。您好,这将不起作用,因为您没有将索引设置到位(
df.set\u index('Date',inplace=True)
)或用新的set\u索引替换新的df(
df=df.set\u index('Date')