如何对合并后的共享单车与天气数据按小时统计骑行ID数量
你现有代码的逻辑不符合需求:ID是单次骑行的唯一标识,按['date','ID']分组后每组仅对应1条记录,统计得到的counts值全部为1,无法实现按小时统计骑行总量的目标。
正确实现方法
根据你分析天气对骑行量影响的需求,推荐按天气表的逐小时date字段分组统计,刚好可以匹配每个时段对应的天气指标:
- 基础统计(仅统计每小时骑行量)
import pandas as pd # 先将date字段统一转换为时间格式,避免字符串匹配出错 data['date'] = pd.to_datetime(data['date']) # 按逐小时时间分组统计骑行ID的数量 hourly_rent = data.groupby('date', as_index=False)['ID'].count().rename(columns={'ID': 'rent_count'})
- 保留天气指标(方便后续直接做相关性分析)
hourly_data = data.groupby('date', as_index=False).agg( rent_count = ('ID', 'count'), rain = ('rain', 'first'), temp = ('temp', 'first'), wdsp = ('wdsp', 'first') )
- 可选:按自然小时聚合(统计0-23点每个小时的平均骑行量和对应天气均值)
# 提取小时维度 data['hour'] = data['date'].dt.hour hour_avg = data.groupby('hour', as_index=False).agg( avg_rent = ('ID', 'count'), avg_rain = ('rain', 'mean'), avg_temp = ('temp', 'mean'), avg_wdsp = ('wdsp', 'mean') )
内容的提问来源于stack exchange,提问作者briano93
相关产品推荐
相关产品推荐

