尝试使用mpl绘制数据框,遇到日期时间错误,不知道如何清理数据

问题描述 投票:0回答:1

我有我想玩的股票数据,我想我应该用 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),我对如何清理日期以及如何找到坏行(如果有的话)有点困惑。

如有任何帮助,我们将不胜感激。我不知道这是我的代码还是我的数据。我被引导相信这是我的数据,但这是我第一次弄乱这些东西,所以我不知道。

python datetime typeerror yahoo-finance mplfinance
1个回答
0
投票
  • 可以通过在加载 csv 后格式化
    'Datetime'
    列来解决此问题。
    1. df = pd.read_csv('aapl.csv', index_col='Datetime')
    2. 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
    ,格式。
© www.soinside.com 2019 - 2024. All rights reserved.