Два временных ряда не будут отображаться на одной оси x (проблема формата даты)? - PullRequest
2 голосов
/ 09 апреля 2019

Я пытаюсь импортировать данные из iex и FRED.Хотя оба временных ряда относятся к одному и тому же периоду, при их совместном отображении данные не отображаются правильно на одной оси x.Я подозреваю, что это связано с различиями между форматированием дат iex и форматированием дат FRED.

Код ниже:

import matplotlib.pyplot as plt

import pandas as pd
from pandas_datareader.data import DataReader 

from datetime import date 

start = date(2016,1,1)
end = date(2016,12,31)

ticker = 'AAPL'

data_source = 'iex'

stock_prices = DataReader(ticker, data_source, start, end)

print(stock_prices.head())
stock_prices.info()

stock_prices['close'].plot(title=ticker)
plt.show()

series = 'DCOILWTICO'
start = date(2016,1,1)
end = date(2016,12,31)
oil = DataReader(series,'fred',start,end)
print(oil.head())
oil.info()

data = pd.concat([stock_prices[['close']],oil],axis=1)
print(data.head())

data.columns = ['AAPL','Oil Price']
data.plot()
plt.show()

1 Ответ

0 голосов
/ 10 апреля 2019

Использование объединения вместо pd.concat даст вам то, что вы хотите:

data = stock_prices[['close']].join(oil)

enter image description here

Основная проблема с pd.concat заключается в том, чтоИндекс ваших данных не выровнен, поэтому странно слипается DataFrame.pd.join позаботится о смещении

...