You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为trips DataFrame的行程时长分组并统计骑行次数

Pandas 行程时长分组与骑行次数统计

1. 新增行程时长区间列

针对你的数据分布(80%骑行集中在0-15分钟,最长达1000分钟),推荐自定义区间来兼顾核心数据的细粒度和长尾数据的合理性。使用pd.cut()可以自动生成区间列,无需手动逐个创建区间标签:

import pandas as pd

# 自定义区间:核心区细粒度划分,长尾区宽区间覆盖
bins = [0, 1, 2, 5, 10, 15, 30, 60, 120, 1000]
# 对应的友好标签(可选,也可以直接使用默认的区间字符串)
labels = ["0-1分钟", "1-2分钟", "2-5分钟", "5-10分钟", "10-15分钟", "15-30分钟", "30-60分钟", "60-120分钟", "120-1000分钟"]

# 复制原DataFrame并新增区间列
trips_with_bins = trips.copy()
trips_with_bins["时长区间"] = pd.cut(
    trips_with_bins["行程时长(分钟)"],
    bins=bins,
    labels=labels,
    include_lowest=True  # 确保0分钟的行程被包含在第一个区间内
)

2. 生成区间与骑行次数总和的汇总表

通过groupby按区间分组,聚合计算骑行次数总和即可:

# 按区间分组求和,重置索引将分组列转为普通列
trip_summary = trips_with_bins.groupby("时长区间", observed=False)["骑行次数"].sum().reset_index()
  • observed=False:保留所有自定义的区间(即使某个区间没有数据,也会显示为0),如果不需要空区间可以去掉该参数。

额外问题解答

不需要手动创建如“0-1”这类区间,Pandas提供了两种自动分组方案,需结合数据分布选择:

  1. 自定义区间的自动分组(推荐):如上面的pd.cut(),你只需定义区间边界,Pandas会自动将数据映射到对应区间,还能自定义标签。这种方式完全适配你的数据分布——核心区间细分、长尾区间放宽,统计结果更有业务价值。
  2. 按分位数自动分组:使用pd.qcut()可以根据数据的分位数自动划分区间(比如分成4/5个等数量的区间),但这种方式的区间边界由数据分布决定,可能出现不规整的边界,且无法手动控制核心区间的粒度,适合快速探索数据分布,不适合需要固定区间的业务统计。

示例代码(按分位数自动分组):

trips_with_qbins = trips.copy()
# 分成5个等数量的区间,precision=0保留整数边界
trips_with_qbins["时长区间"] = pd.qcut(trips_with_qbins["行程时长(分钟)"], q=5, precision=0)

内容的提问来源于stack exchange,提问作者Nadia099

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:10:04