我有一个只有两列的数据框,日期和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
任何帮助表示赞赏。
答案 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()