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

基于Pandas计算芝加哥出租车数据各ID时段数值总和及全体ID中位数

解决芝加哥出租车行程数据的统计需求

咱们直接上手,用Pandas一步步实现你要的统计逻辑:

1. 先筛选指定时间段内的数据

因为你的时间戳已经是Pandas datetime格式了,直接用布尔索引就能轻松过滤出目标时间段的数据。比如假设你要统计2016年1月到6月的行程,代码如下:

# 定义你的目标时间段,替换成实际需要的起止时间
start_date = '2016-01-01'
end_date = '2016-06-30'

# 生成筛选掩码
time_mask = (df['Trip End Timestamp'] >= start_date) & (df['Trip End Timestamp'] <= end_date)

# 得到筛选后的数据集
filtered_trips = df[time_mask]

# 可选:如果Taxi ID有缺失值,提前过滤掉,避免无效分组
filtered_trips = filtered_trips.dropna(subset=['Taxi ID'])

2. 计算每个Taxi ID的行程总金额之和

按Taxi ID分组,对Trip Total列求和,得到每个出租车的总营收:

# 分组求和
taxi_total_fares = filtered_trips.groupby('Taxi ID')['Trip Total'].sum()

这时候taxi_total_fares是一个Series,索引是唯一的Taxi ID,值是对应ID的总行程金额。

3. 计算所有Taxi ID总和的中位数

直接调用Pandas的median()方法就能得到中位数:

# 计算中位数
total_median = taxi_total_fares.median()

# 打印结果
print(f"所有出租车行程总金额的中位数: {total_median}")

如果需要把这几步合并成一行(虽然可读性会差一点),也可以这样写:

total_median = df[(df['Trip End Timestamp'] >= '2016-01-01') & (df['Trip End Timestamp'] <= '2016-06-30')].dropna(subset=['Taxi ID']).groupby('Taxi ID')['Trip Total'].sum().median()

小提示

  • 确保你的Trip End Timestamp列确实是datetime类型,如果不是的话,先转一下:df['Trip End Timestamp'] = pd.to_datetime(df['Trip End Timestamp'])
  • 如果要统计的不是Trip Total,而是其他数值列,替换对应的列名就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:19:57