Как создать точечный график в пандах, сгруппированных по времени суток - PullRequest
0 голосов
/ 31 мая 2019

Я хотел бы создать точечный график с использованием панд, где значения сгруппированы по времени дня и по-разному окрашены / оформлены в зависимости от дня. Фрагмент кода ниже создаст график рассеяния из двух временных рядов.

import pandas as pd
idx = pd.date_range('2019-01-01', periods=48, freq='H')
x = pd.Series(range(len(idx)), index=idx)
y = x
d = {'x': x, 'y': y}
df = pd.DataFrame(data=d)
df.plot.scatter(x='x', y='y')

Однако, когда я попытался объединить данные в списке по времени суток, я не смог отобразить их как разброс:

df['time'] = df.index.time
df_agg= df.groupby('time').agg(list)

1 Ответ

1 голос
/ 31 мая 2019

Поскольку вы хотите выполнить точечный график и сохранить все данные, я предлагаю не использовать groupby.Вместо этого методы hour и day объектов DatetimeIndex предоставляют простой способ раскраски по дням и построения графика по дневному часу.

import pandas as pd
import matplotlib.pyplot as plt

idx = pd.date_range('2019-01-01', periods=48, freq='H')
x = pd.Series(range(len(idx)), index=idx)
y = x
# add 'hour' and 'day' columns in the dataframe
d = {'x': x, 'y': y, 'hour': idx.hour, 'day': idx.day}
df = pd.DataFrame(data=d)
# use 'hour' as x axis to plot, and 'day' as marker color
df.plot.scatter(x='hour', y='y', c='day', colormap='rainbow')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...