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

Pandas 如何在按时间分组的熊猫中创建散点图,pandas,pandas-groupby,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.s

我想使用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)

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

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
idx=pd.日期范围('2019-01-01',期间=48,频率=H')
x=pd.系列(范围(len(idx)),索引=idx)
y=x
#在数据框中添加“小时”和“天”列
d={'x':x,'y':y,'hour':idx.hour,'day':idx.day}
df=pd.DataFrame(数据=d)
#使用“小时”作为x轴进行绘图,“天”作为标记颜色
df.plot.scatter(x='hour',y='y',c='day',colormap='rainbow')
plt.show()

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

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
idx=pd.日期范围('2019-01-01',期间=48,频率=H')
x=pd.系列(范围(len(idx)),索引=idx)
y=x
#在数据框中添加“小时”和“天”列
d={'x':x,'y':y,'hour':idx.hour,'day':idx.day}
df=pd.DataFrame(数据=d)
#使用“小时”作为x轴进行绘图,“天”作为标记颜色
df.plot.scatter(x='hour',y='y',c='day',colormap='rainbow')
plt.show()

是否要按时间分组?这意味着
time
为00:00:00的值将是一种颜色,
time
为01:00:00的值将具有不同的颜色,依此类推?我希望按时间分组,这意味着x轴和y轴的长度为时间(在本例中为24),并按天着色(在本例中为2种颜色为2天)。如果按时间分组,那你怎么能在白天分开呢?当您按时间分组时,由于值被聚合在一起,因此这一天不起作用。我能够得到这两天,因此问题是,它们应该在两个单独的日子里相互重叠绘制——x轴和y轴的长度应该是24,而不是48
ax=plt.subplot(),对于日期,数据在df.groupby中(df.index.date):a=df[df.index.date==date]。值a=pd.DataFrame(a,列=['x','y'])a.plot.scatter(x='x',y='y',ax=ax)plt.show()
是否要按时间分组?这意味着
时间
为00:00:00的值将是一种颜色,而
时间
为01:00:00的值将具有不同的颜色,依此类推?我希望按时间分组,这意味着x轴和y轴的长度为时间(在本例中为24),并按天着色(在这种情况下,2种颜色为2天)如果你按时间分组,那么你怎么能按天分组呢?如果你按时间分组,那么这一天就不起作用了,因为这些值是聚合在一起的。我能够得到这两天的时间,但是问题是,它们应该在这两个单独的日子里相互重叠绘制——x轴和y轴的长度应该是24,而不是48
ax=plt.subplot()表示日期,df.groupby(df.index.date)中的数据:a=df[df.index.date==date]。值a=pd.DataFrame(a,列=['x','y'])a.plot.scatter(x='x',y='y',ax plt.show()