Подтвердить что ты не робот

Matplotlib plot datetime в pandas DataFrame

У меня есть pandas DataFrame, который выглядит как training.head()

enter image description here

DataFrame был отсортирован по дате. Я хотел бы сделать диаграмму рассеяния, где дата кампании находится на оси x, а скорость успеха - на оси y. Мне удалось получить линейный график, используя training.plot(x='date',y='rate'). Однако, когда я изменил это на training.plot(kind='scatter',x='date',y='rate'), я получаю сообщение об ошибке: KeyError: u'no item named date '

Почему мой индексный столбец исчезает, когда я пытаюсь сделать диаграмму рассеяния? Кроме того, я уверен, мне нужно что-то сделать с этим полем даты, чтобы он не обрабатывался как простая строка, не так ли?

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

4b9b3361

Ответ 1

Если я правильно помню, код построения учитывает только числовые столбцы. Внутренне он выбирает только числовые столбцы, поэтому вы получаете ключевую ошибку.

Что такое dtype date? Если это a datetime64, вы можете переделать его как np.int64:

df['date_int'] = df.date.astype(np.int64)

И тогда вы заговор.

Для цветной части сделайте словарь {account number: color}. Например:

color_d = {1: 'k', 2: 'b', 3: 'r'}

Затем, когда вы рисуете:

training.plot(kind='scatter',x='date',y='rate', color=df.account.map(color_d))

Ответ 2

Мне было проще изменить style линейной диаграммы, чтобы не включать соединительные линии:

cb_df.plot(figsize=(16, 6), style='o')

enter image description here

Ответ 3

В графическом коде учитываются только числовые столбцы, поэтому приведенная ниже часть кода даст вам ошибку:

df['Date'] = pd.to_datetime(df.Date) 

попробуйте pd.to_numeric, как показано ниже, и используйте finnaly scatter plot. Это сработало для меня!

df['Date'] = pd.to_numeric(df.Date)