使用熊猫和日期时间格式进行绘图

时间:2018-09-10 22:01:53

标签: python pandas datetime matplotlib

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

  

ValueError:最小查看限制-36785.37852小于1,并且是无效的Matplotlib日期值。如果您将非datetime值传递给具有datetime单位的轴,通常会发生这种情况

我从matplotlib找到了有关此文档,但是该文档说明了如何确保格式为datetime。这是我必须确保格式为日期时间的代码,并在尝试绘制之前还要打印每列的数据类型。

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

print(df['ClosingPrice'].dtypes)
print(df['Date'].dtypes)

这些打印语句的输出为:

  

float64   datetime64 [ns]

我不确定问题出在哪里,因为在绘制之前我正在验证数据类型。这也是数据集的前几行的样子:

Date ClosingPrice 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 个答案:

答案 0 :(得分:5)

看到更多人来到这里后,

最新编辑。为了让新手了解python,您应该首先导入熊猫以使下面的代码起作用:

import pandas as pd

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

df.set_index('Date', inplace=True)

可以肯定的是,请尝试设置索引dtype(编辑:可能不需要像以前一样进行此操作):

df.index = pd.to_datetime(df.index)

然后绘制

df.plot()

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

如果“您的DataFrame有Datetimeindex和另外2列(例如['Currency','pct_change_1']),而您想只绘制其中之一(也许是pct_change_1),则可以:

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

您要在figsize=(15,8)上设置图(width, height)的大小。

最后编辑:

如果³您不想删除原始索引,还可以:

df[['Date','ClosingPrice']].plot('Date', figsize=(15,8))

答案 1 :(得分:0)

这是一个简单的解决方案:

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