ось даты и времени (временная метка, а не строка) - PullRequest
0 голосов
/ 26 мая 2018

Я начал изучать Python Panda.Я хочу указать дату и время на моей оси x, но у меня появляется следующая ошибка: TypeError: ('TSLA', Timestamp ('2018-01-01 00:00:00')) не является строкой.У кого-нибудь есть решение для этого?

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

style.use('ggplot')

start = dt.datetime(2018, 1, 1)
end = dt.datetime(2018, 5, 24)

df1 = web.DataReader('TSLA', 'morningstar', start, end)  

df1['100ma'] = df1['Open'].rolling(window=100).mean() 

ax1 = plt.subplot2grid((6, 1), (0, 0), rowspan=5, colspan=1)
ax2 = plt.subplot2grid((6, 1), (5, 0), rowspan=1, colspan=1)

ax1 = plt.subplot2grid((6, 1), (0, 0), rowspan=5, colspan=1)
ax2 = plt.subplot2grid((6, 1), (5, 0), rowspan=1, colspan=1, sharex=ax1)


ax1.plot(df1.index, df1['Close'])  # (x,y)
ax1.plot(df1.index, df1['100ma'])
ax2.bar(df1.index, df1['Volume'])


plt.show()

Это работает:

ax1.plot(df1['High'], df1['Close']) #works

Но у меня нет «доступа» к столбцу «Дата»:

ax1.plot(df1['Date'], df1['Close']) # doesn't work

Заранее спасибо.

1 Ответ

0 голосов
/ 26 мая 2018

df1.index - это кортеж

t=[str(i[1].date()) for i in df1.index]
ax1.plot(t, df1['Close'])  # (x,y)
ax1.plot(t, df1['100ma'])
ax2.bar(t, df1['Volume'])

plt.gcf().autofmt_xdate()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...