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 '
Почему мой индексный столбец исчезает, когда я пытаюсь сделать диаграмму рассеяния? Кроме того, я уверен, мне нужно что-то сделать с этим полем даты, чтобы он не обрабатывался как простая строка, не так ли?
Дополнительный кредит, что бы я сделал, если бы я хотел, чтобы каждый из номеров учетных записей отображался с другим цветом?
Ответы
Ответ 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)