Даты оси x не отображаются в matplotlib при импорте данных из pandas DataReader

Я использую pandas DataReader для построения графиков биржевых диаграмм в matplotlib, но даты не отображаются на оси x, когда я использую следующий код:

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import datetime as dt
from datetime import datetime
import pandas_datareader.data as web

start = datetime(2014,1,1)
end = datetime(2018,9,27)
spy = web.DataReader('SPY','iex',start,end)
spy['open'].plot(xlim=['2018-01-01','2018-02-28'])

Результат: Диаграмма SPY без дат по оси x

Однако, когда я импортирую те же данные из csv с помощью следующей команды, даты отображаются нормально, когда я рисую данные:

spy_csv = pd.read_csv('spy.csv',index_col='date',parse_dates=True)

Я предполагаю, что "parse_dates = True" имеет значение, поэтому мне интересно, есть ли эквивалентная команда при импорте из DataReader. Как бы этот эквивалент выглядел в моем коде DataReader?


person willowuidiot    schedule 28.09.2018    source источник


Ответы (1)


Я думаю, вам следует изменить свой индекс на формат datetime

spy.index=pd.to_datetime(spy.index)

Затем передайте xlim с помощью Timestamp

spy['open'].plot(xlim=[pd.Timestamp('2018-01-01'),pd.Timestamp('2018-02-28')])

введите здесь описание изображения

person BENY    schedule 28.09.2018
comment
Спасибо, ваш код сработал. Мне нужно было преобразовать индекс с помощью to_datetime (). Однако я обнаружил, что добавление pd.Timestamp не повлияло на график, но я доволен кодированием. - person willowuidiot; 28.09.2018