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

基于时间间隔与属性分组的Pandas车辆数据聚合及CSV导出需求

使用Pandas高效生成两类车型聚合CSV文件

原始数据集

import pandas as pd

data = {
    'timestamp': ['2022-11-03 00:00:06', '2022-11-03 00:00:33', '2022-11-03 00:00:35', '2022-11-03 00:00:46', '2022-11-03 00:01:21', '2022-11-03 00:01:30'],
    'from': ['A', 'A', 'A', 'A', 'B', 'C'],
    'to': ['B', 'B', 'B', 'C', 'C', 'B'],
    'type': ['Car', 'Car', 'Van', 'Car', 'HGV', 'Van']
}

df = pd.DataFrame(data)

需求说明

  • 针对每种车型生成独立CSV:按15分钟时间间隔、from列分组,统计车辆数量,不含to列;
  • 针对每种车型生成独立CSV:按15分钟时间间隔、from+to列分组,统计车辆数量。

实现步骤

1. 数据预处理

先将timestamp转换为datetime类型并设置为索引,这是resample时间聚合的必要前提:

# 转换时间列格式为datetime
df['timestamp'] = pd.to_datetime(df['timestamp'])
# 设置时间列为数据索引
df = df.set_index('timestamp')

2. 生成第一类CSV(按15分钟+from分组)

遍历所有车型,对单车型数据做15分钟时间重采样,再按from字段聚合计数,最后导出为CSV:

# 遍历数据中所有车型
for vehicle_type in df['type'].unique():
    # 筛选当前车型的数据集
    type_subset = df[df['type'] == vehicle_type]
    # 按from分组+15分钟时间间隔统计数量
    agg_result = type_subset.groupby('from').resample('15min').size().reset_index(name='vehicle_count')
    # 保存为CSV文件,命名规则:车型_15min_仅出发地统计.csv
    agg_result.to_csv(f'{vehicle_type}_15min_from_only.csv', index=False)

3. 生成第二类CSV(按15分钟+from+to分组)

逻辑和第一类一致,仅增加to字段作为分组维度:

# 遍历数据中所有车型
for vehicle_type in df['type'].unique():
    # 筛选当前车型的数据集
    type_subset = df[df['type'] == vehicle_type]
    # 按from+to分组+15分钟时间间隔统计数量
    agg_result = type_subset.groupby(['from', 'to']).resample('15min').size().reset_index(name='vehicle_count')
    # 保存为CSV文件,命名规则:车型_15min_出发地目的地统计.csv
    agg_result.to_csv(f'{vehicle_type}_15min_from_to.csv', index=False)

补充说明

  • 代码会自动识别数据中所有车型,即使后续新增车型(比如你提到的8种)也无需修改代码;
  • resample('15min')会自动按15分钟时间桶聚合,时间桶起始会对齐数据中最早的时间点;
  • size()方法用于统计每组的记录数,对应实际车辆通行数量。

内容的提问来源于stack exchange,提问作者Roman Dostál

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:30:43