【问题标题】:Two time series won't graph on same x axis (date format issue)?两个时间序列不会在同一个 x 轴上绘制(日期格式问题)?
【发布时间】:2019-08-31 05:31:53
【问题描述】:

我正在尝试从 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()

【问题讨论】:

    标签: python datetime matplotlib pandas-datareader


    【解决方案1】:

    使用 join 而不是 pd.concat 会给你想要的:

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

    pd.concat 的主要问题是您的数据索引未对齐,因此出现了奇怪的拼接 DataFrame。 pd.join 将处理错位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多