【快手】数据挖掘面试题0002:求某地铁站每日客流量,乘地铁经过、进出站人都包括在内

发布于:2025-07-09 ⋅ 阅读:(30) ⋅ 点赞:(0)

1.求某地铁站每日客流量,乘地铁经过、进出站人都包括在内 费米问题

结合费米问题的“拆解-假设-估算”逻辑与SQL的“数据提取-聚合分析”能力,可以更系统地估算地铁站每日客流量。

  • 以下是具体分析过程:
    在这里插入图片描述

第一步:明确问题与数据基础

  • 目标:估算某地铁站每日总客流量(含进站、出站、换乘/经过三类人群)。
    假设我们有基础数据记录表 subway_events,结构如下:
    字段名 含义 示例值
    user_id 乘客唯一标识 1001
    station_id 地铁站ID S018
    event_time 事件时间 2023-10-01 08:30:00
    event_type 事件类型 ‘IN’(进站)、‘OUT’(出站)、‘TRANSFER’(换乘)

第二步:费米问题拆解框架

将总客流拆分为3个核心组成部分,再按“时段”细化(地铁运营时间通常为5:30-23:30,共18小时):

  • 总客流 = 进站人数 + 出站人数 + 换乘/经过人数
关键假设(基于“二线城市区域中心站”场景)
  1. 时段划分

    • 高峰:7:00-9:00(早高峰,2h)、17:00-19:00(晚高峰,2h),共4h
    • 平峰:9:00-17:00(8h)、19:00-21:00(2h),共10h
    • 低峰:5:30-7:00(1.5h)、21:00-23:30(2.5h),共4h
  2. 客流组成假设

    • 进站 / 出站:同一乘客的“进站”和“出站”是配对的,但单日同一乘客可能多次进出(如通勤+购物)
    • 换乘 / 经过:乘客在该站从A线换乘到B线,未出闸机,属于“经过”,记录为“TRANSFER”事件。

第三步:用SQL实现“数据驱动的费米估算”

通过SQL提取各组成部分的量化数据,结合假设验证并汇总。

Step 1:按“时段+事件类型”统计基础数据

先用SQL分时段统计“进站、出站、换乘”的原始记录数(反映各环节的流量规模)

-- 按时段和事件类型分组统计
WITH time_segments AS (
  SELECT 
    station_id,
    DATE(event_time) AS stat_date,
    -- 划分时段(高峰/平峰/低峰)
    CASE 
      WHEN HOUR(event_time) BETWEEN 7 AND 8 OR HOUR(event_time) BETWEEN 17 AND 18 
        THEN 'peak'  -- 早7-9、晚17-19(简化为整点时段,便于计算)
      
      WHEN HOUR(event_time) BETWEEN 9 AND 16 OR HOUR(event_time) BETWEEN 19 AND 20 
        THEN 'flat'  -- 平峰9-17、19-21
      
      ELSE 'off_peak'  -- 低峰5-7、21-23
    END AS time_period,
    event_type  -- 事件类型:IN/OUT/TRANSFER
  FROM subway_events
  WHERE station_id = 'S018'  -- 目标地铁站
)
-- 统计各时段的事件数量
SELECT 
  stat_date,
  time_period,
  SUM(CASE WHEN event_type = 'IN' THEN 1 ELSE 0 END) 

网站公告

今日签到

点亮在社区的每一天
去签到