Matplotlib DatetimeIndex Ошибка - ни одно из значений не находится в столбцах - PullRequest
0 голосов
/ 09 февраля 2020

Я взял некоторые данные в формате csv, которые представлены в формате ежедневной даты, преобразовал эти данные в месячные и теперь хочу визуализировать с помощью matplotlib. Однако, когда я пытаюсь построить пересчитанные данные временных рядов, я сталкиваюсь со следующей ошибкой и не уверен, что делать дальше. Я пытался ссылаться на df.index и df.index.values безуспешно

KeyError: "None of [DatetimeIndex(['2019-02-28', '2019-03-31',\n               '2019-04-30', '2019-05-31', '2019-06-30', '2019-07-31',\n               '2019-08-31', '2019-09-30', '2019-10-31', '2019-11-30',\n               '2019-12-31', '2020-01-31'],\n              dtype='datetime64[ns]', freq=None)] are in the [columns]"

Вот мой код:

# Libraries
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

%matplotlib inline

df = pd.read_csv('tv-sales.csv', parse_dates=['Date'], index_col='Date')

df.info()

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 365 entries, 2019-02-01 to 2020-01-31
Data columns (total 6 columns):
 #   Column               Non-Null Count  Dtype  
---  ------               --------------  -----  
 0   Spend                365 non-null    float64
 1   Traffic              365 non-null    int64  
 2   Sales                365 non-null    int64  

# Resample to Months
df = df.resample('M').sum()

df.index

DatetimeIndex(['2019-02-28', '2019-03-31',
               '2019-04-30', '2019-05-31', '2019-06-30', '2019-07-31',
               '2019-08-31', '2019-09-30', '2019-10-31', '2019-11-30',
               '2019-12-31', '2020-01-31'],
              dtype='datetime64[ns]', name='Date', freq='M')

# Visualize

ax = df.plot(x=df.index.values, y='Spend', legend=False)

1 Ответ

0 голосов
/ 09 февраля 2020

Использование x=df.index.values приведет к ошибке, поскольку pandas попытается получить значение df.index.values в качестве столбца.

Вы можете использовать use_index, чтобы установить индекс в качестве значения x:

df.plot(y='Spend', use_index=True)

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