DS PhD Intern · 70-minute OA Q1–Q2

Capital One DS OA:CSV 合并、条件均值与日期过滤

DS PhD Intern OA 前两题的可读操作:读取/合并 CSV、算均值与条件均值、过滤时间;按数据契约拆解。

题目重点:DS PhD Intern OA 前两题的可读操作:读取/合并 CSV、算均值与条件均值、过滤时间;按数据契约拆解。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练示例用 orders(order_id,customer_id,amount,event_time) 和 customers(customer_id,segment),按 customer_id 做 many-to-one left join;这些列名和连接方式不是原题。
  • 均值只对数值且非空 amount 计算,条件示意 segment=A;日期解析为统一 UTC,‘之后’按严格 > 解释,边界需确认。

解题路线

  1. 读文件时指定/校验 schema,解析数值与时间;对 join key 检查空值、重复和基数,明确 inner/left 后行数变化。
  2. 合并时用 pandas merge(validate='many_to_one') 之类的约束防止重复 key 乘法扩张;若真实题需多对多,先问聚合语义。
  3. 整体 mean 与条件 mean 分开计算,显式处理过滤后空集、NaN 和金额类型;若金额是财务精确值,用整数分或 Decimal,不拿 float 当账务真相。
  4. 过滤时间时统一时区、格式与是否包含边界;保留可复现的行序/索引规则并按题目输出契约保存。

手动走一遍

训练例:orders 为 (o1,u1,10,10:00)、(o2,u2,20,11:00)、(o3,u1,30,12:00),customers 中 u1=A、u2=B;合并后整体均值 20,A 组均值 20;严格晚于 10:00 得 o2/o3。列名和时点仅示意。

规模与取舍

哈希连接预期 O(n+m),额外空间 O(n+m);均值与时间过滤线性。pandas 实际内存可明显高于文件大小,数据超内存时改用分块/数据库并保持相同 join 语义。

易错点与追问

容易失分的边界

  • 猜测题目未披露的列名或关联键。
  • 维表重复键导致金额行被复制,均值被改变。
  • 字符串日期直接比较,混合时区出错。
  • 把空条件集合的 NaN 当 0。
  • 训练/测试预处理与 q24 混为同题。

继续深挖

  • 维表 key 重复怎么办?
  • CSV 大于内存如何合并?
  • 条件均值中缺失值如何定义分母?
  • 等于边界日期是否包含?
✓已复制微信号!