Преобразование из индекса (целочисленной метки) в дату / время для фрейма данных Pandas

#python #database #pandas #dataframe #datetime

#python #База данных #pandas #фрейм данных #дата-время

Вопрос:

Я пытаюсь построить две экспоненциальные скользящие средние (EMA) вместе с исходными данными, которые имеют единицы измерения даты / времени.

для создания EMA я использую функцию, которая возвращает массив значений на основе входных данных, которые я затем использую для создания фреймов данных EMA с разными периодами, используя:

 EMAl = pd.DataFrame()
EMAl['explow'] = ema(20) #array
  

Проблема в том, что это создает единицы индекса по умолчанию.

Я считаю, что в какой-то момент мне следует использовать pd.to_datetime, но я не уверен, как его использовать, чтобы единицы измерения данных / времени EMAs соответствовали единицам входных данных.

Вот как я загружаю входные данные в начале.

 tesla_df = yf.download('TSLA', 
                      start='2019-08-01', 
                      end='2020-08-31', 
                      progress=False)
  

вот входной фрейм данных —

 Date        Open        High        Low          Close       Adj Close  Volume                      
2019-07-31  243.000000  246.679993  236.649994  241.610001  241.610001  9178200
2019-08-01  242.649994  244.509995  231.770004  233.850006  233.850006  8259500
  

Я не могу сохранить столбец даты за заданный интервал времени в фрейме данных EMA, который в конечном итоге выглядит следующим образом:

     exphigh
0   233.774002
1   233.656001
2   235.204002
3   235.139333
4   233.096220
  

Когда я пытаюсь отобразить следующее

 plt.figure(figsize=(22.5, 9.5))
tesla_df['Close'].plot(title="TSLA's stock price")
plt.plot(EMAl['explow'])
  

я получаю следующее сообщение об ошибке
‘минимальный предел просмотра -36883.200000000004 меньше 1 и является недопустимым значением даты Matplotlib. Это часто происходит, если вы передаете значение, отличное от datetime, оси с единицами datetime’

Комментарии:

1. Неясно, в чем ваша проблема. Опубликуйте, что делает ваш код, и пример ожидаемого вывода.

2. Я добавил еще немного информации к сообщению. Надеюсь, это прояснит ситуацию

3. В какой строке возникает ошибка? Похоже, что у вас есть некоторое отрицательное значение в столбце, интерпретируемое как дата для построения графика. Все значения даты должны быть положительными.

4. Ошибка возникает из-за разницы в единицах измерения между двумя наборами данных, которые я пытаюсь отобразить. Я застрял на том, как преобразовать единицы нового набора данных, чтобы они соответствовали оригиналу и могли быть построены вместе.