如何在一天中按时间分组的大熊猫中创建散点图

时间:2019-05-31 10:26:23

标签: pandas pandas-groupby

我想使用Pandas创建散点图,其中将值按一天中的时间进行分组,并根据当天的颜色/样式进行不同的设置。下面的代码段将创建两个时间序列的散点图。

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 个答案:

答案 0 :(得分:1)

由于您要执行散点图并保留所有数据,因此建议不要使用groupby。相反,DatetimeIndex对象的hourday方法提供了一种简单的方法来按日着色和按日小时绘图。

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()