我有我想玩的股票数据,我想我应该用 mpl 来绘制它。这是我尝试过的:
daily = pd.read_csv('data/AAPL/history.csv',index_col=0,parse_dates=True)
mpf.plot(daily)
这回来了
TypeError: Expect data.index as DatetimeIndex
然后我按照docs
尝试了这个daily = pd.read_csv('data/AAPL/history.csv',index_col=0,parse_dates=True)
daily.index.name = 'Date'
mpf.plot(daily)
这会产生同样的错误。
然后我尝试设置索引:
daily = pd.read_csv('data/AAPL/history.csv',index_col=0,parse_dates=True)
daily.index = pd.DatetimeIndex(daily['Date'])
mpf.plot(daily)
出现错误:
KeyError: 'Date'
尝试做同样的事情但不设置索引:
daily = pd.read_csv('data/AAPL/history.csv')
daily.index = pd.DatetimeIndex(daily['Date'])
mpf.plot(daily)
退货:
TypeError: [datetime.datetime(1980, 12, 12, 0, 0, tzinfo=tzoffset(None, -18000))
datetime.datetime(1980, 12, 15, 0, 0, tzinfo=tzoffset(None, -18000))
datetime.datetime(1980, 12, 16, 0, 0, tzinfo=tzoffset(None, -18000)) ...
datetime.datetime(2023, 11, 10, 0, 0, tzinfo=tzoffset(None, -18000))
datetime.datetime(2023, 11, 13, 0, 0, tzinfo=tzoffset(None, -18000))
datetime.datetime(2023, 11, 14, 0, 0, tzinfo=tzoffset(None, -18000))]
这让我相信其中一行的格式不正确。我从 yfinance 获得了这些数据,我只是按照您的预期读取它。但由于行数如此之大(10,823),我对如何清理日期以及如何找到坏行(如果有的话)有点困惑。
如有任何帮助,我们将不胜感激。我不知道这是我的代码还是我的数据。我被引导相信这是我的数据,但这是我第一次弄乱这些东西,所以我不知道。
'Datetime'
列来解决此问题。
df = pd.read_csv('aapl.csv', index_col='Datetime')
df.index = pd.to_datetime(df.index, utc=True)
Timestamp('2023-01-03 14:30:00+0000', tz='UTC')
是结果格式,可与 mpf.plot(df)
Timestamp('2023-01-03 09:30:00-0500', tz='America/New_York')
,与 mpf.plot(df)
配合使用。df = pd.read_csv('aapl.csv', index_col='Datetime', parse_dates=['Datetime'])
结果:
Timestamp('2023-01-03 09:30:00-0500', tz='UTC-05:00')
,不适用于 mpf.plot(df)
。mpf.plot(df)
好像很讲究时区,tz
,格式。