【发布时间】:2019-03-01 06:56:39
【问题描述】:
我在用 Python 编写代码时遇到了麻烦。任务是使用金融报价数据绘制烛台柱。首先,我创建了四个新列,从“买入”“卖出”到“开盘”、“高”、“低”、“收盘”(因为烛台需要这样的列)。 好的,现在我解决了一些问题,现在我遇到了新问题。下面的句子是我不明白的许多错误之一:
ValueError: Cannot convert -1 to a date. This often happens if non-datetime
values are passed to an axis that expects datetime objects.
当我尝试打印特别是 Date_Time 时,我得到了这个:
Date_Time
2016-05-02 00:00:00 NaN
2016-05-02 00:10:00 NaN
2016-05-02 00:20:00 NaN
2016-05-02 00:30:00 NaN
2016-05-02 00:40:00 NaN
Freq: 10T, Name: Date_Time, dtype: float64
我不知道我是怎么来到 NaN 的。
这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from mpl_finance import candlestick_ohlc
import matplotlib.dates as dates
data_pd = pd.read_csv('EURUSD-2016-05.csv', names=['Symbol', 'Date_Time', 'Bid', 'Ask'])
data_pd.head()
format = '%Y%m%d %H:%M:%S'
data_pd['Date_Time'] = pd.to_datetime(data_pd['Date_Time'], format = format)
data_pd = data_pd.set_index(data_pd['Date_Time'])
data_pd = data_pd.drop(columns=['Symbol'])
data_ask = data_pd['Ask'].resample('10Min').ohlc()
data_ask = data_ask.reindex(columns= ['Date_Time', 'open', 'high', 'low', 'close'])
ohlc = data_ask[['Date_Time','open','high','low','close']]
f1, ax = plt.subplots(figsize = (10,5))
ax.xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d %H:%M:%S'))
candlestick_ohlc(ax, ohlc.values, width=.6, colorup='green', colordown='red')
plt.show()
我的数据如下:
EUR/USD,20160502 00:00:00.033,1.14607,1.14613
EUR/USD,20160502 00:00:00.149,1.14607,1.14613
EUR/USD,20160502 00:00:00.237,1.14607,1.1461
EUR/USD,20160502 00:00:00.332,1.14605,1.1461
这是您可以获取我的数据的链接:
https://pepperstone.com/uk/client-resources/historical-tick-data
如果能提供任何帮助,我将不胜感激。请善待,因为我是 Python 新手。
【问题讨论】:
-
您尝试使用
pd.read_csv('EURUSD-2016-05.csv', names=['Symbol', 'Bid', 'Ask'], index_col='Date_Time', parse_dates=True)参考pandas.read_csv 了解更多详情。 -
data_pd = data_pd.reindex(columns= ['Data_Time', 'open', 'high', 'low', 'close'])- 这行写的是'Data_Time'而不是'Date_Time' -
另外,您已经删除了
Date_Time列,然后再次引用它。 -
好的,谢谢。但这无济于事:/
-
@GiedrėJuodzevičiūtė 您能否更新您遇到的错误?