首页 > 解决方案 > 如何在python中绘制每个工作日和每小时的数据

问题描述

我想通过显示每小时和工作日的自行车数量的平均值来绘制我的时间序列(自行车)数据。

这是初始数据的摘录:

date                    nb_bike     
2019-09-20 12:00:00     15  
2019-09-20 13:00:00     10  
2019-09-20 14:00:00     17  
2019-09-20 15:00:00     12  
2019-09-20 16:00:00     24  

我以这种方式计算了每个工作日和每小时的平均值:

data_b = data_b_init.groupby([data_b_init.index.weekday.rename('wkday'),data_b_init.index.hour.rename('hour')]).mean()
data_b = data_b.reset_index()

所以我想绘制这些数据(这里是摘录):

data_b

wkday   hour    nb_bike_mean    
0   0   0.44    
0   1   0.11    
0   2   0.00    
0   3   0.11    
0   4   0.00    
0   5   0.67    
0   6   0.78    
0   7   6.44    
0   8   13.83   
0   9   9.78    

我想做这样的事情:如何每小时绘制数据,按天分组? (尤其像这张图: 在此处输入图像描述

但我不知道如何通过只保留工作日和时间信息而不是几天来做到这一点。

例如,我尝试了以下代码:

sns.lineplot(x='hour',y='nb_bike_mean',data=data_b, hue='wkday')

但这不是我想要的,因为我想要 x 轴上的 wkday 和 hour。

您知道在 x 轴上绘制 2 个级别的方法吗?

或者更好的是,将 wkday 和 hour 识别为 datetime 并将它们作为 index 加入?

标签: pythonpandasdatetimeseaborn

解决方案


推荐阅读