如何用Pandas获取DataFrame每日车辆ID统计的极值与均值?
获取每日vehicle_id统计值的解决方案
别担心,这个需求其实很容易实现,咱们基于你已经写好的代码继续拓展就行:
步骤1:整理中间结果
你已经写出了获取每日各provider唯一vehicle_id数量的代码,咱们先把这个结果转换成更方便后续处理的格式(重置索引,让日期成为普通列):
# 生成每日各provider的唯一车辆数,并重置索引 daily_provider_data = df.groupby( ['provider', df['timestamp'].dt.strftime('%Y-%m-%d')] )[['vehicle_id']].nunique().reset_index() # 给日期列改个更直观的名字(可选,但可读性更好) daily_provider_data.rename(columns={'timestamp': 'date'}, inplace=True)
步骤2:计算每日的min、max、mean
基于上面的中间结果,按日期分组,对vehicle_id列聚合计算你需要的三个统计值:
# 按日期分组,统计最小值、最大值、平均值 daily_stats = daily_provider_data.groupby('date')['vehicle_id'].agg(['min', 'max', 'mean'])
合并成一行代码(可选)
如果你不想单独保存中间变量,也可以把两步合并成一行:
daily_stats = df.groupby( ['provider', df['timestamp'].dt.strftime('%Y-%m-%d')] )[['vehicle_id']].nunique()\ .reset_index()\ .groupby('timestamp')['vehicle_id']\ .agg(['min', 'max', 'mean'])
示例结果说明
用你给出的样例数据来举例,处理后daily_stats的结果会是这样:
| date | min | max | mean |
|---|---|---|---|
| 2019-09-11 | 1224 | 2859 | 2041.5 |
| 2019-09-12 | 1054 | 2761 | 1907.5 |
| 2019-09-17 | 700 | 700 | 700.0 |
这样就完美得到了你需要的每日统计信息啦!
内容的提问来源于stack exchange,提问作者heyarne
相关产品推荐
相关产品推荐

