一、Numpy核心面试题

1. 数组创建与索引

题目:创建一个3x3矩阵,元素为1-9,并提取第二列

import numpy as np
arr = np.arange(1,10).reshape(3,3)
col_2 = arr[:, 1]  # 逗号前为行索引,后为列索引

考点reshape方法、切片操作

2. 广播机制应用

题目:将数组每个元素减去列平均值

col_mean = arr.mean(axis=0)
result = arr - col_mean  # 广播自动对齐维度

陷阱:维度不匹配时触发ValueError


二、Pandas数据处理篇

3. DataFrame的创建与合并

题目:合并两个包含相同列名的DataFrame

df1 = pd.DataFrame({'A': [1,2], 'B': [3,4]})
df2 = pd.DataFrame({'A': [5,6], 'B': [7,8]})
combined = pd.concat([df1, df2], axis=0)  # 纵向堆叠

对比merge用于关联不同列,concat用于简单拼接

4. 缺失值处理技巧

题目:用分组平均值填充缺失值

df['Age'] = df.groupby('Department')['Age'].transform(lambda x: x.fillna(x.mean()))

注意transform返回与原数据相同形状的结果


三、进阶操作与性能优化

5. 向量化操作 vs for循环

题目:计算两列数值的欧氏距离

# 高效写法(向量化)
df['distance'] = np.sqrt((df['x1']-df['x2'])**2 + (df['y1']-df['y2'])**2)

# 低效写法(避免使用!)
for i in range(len(df)):
    df.loc[i,'distance'] = math.sqrt((df.loc[i,'x1'] - df.loc[i,'x2'])**2 + ...)

原理:Numpy底层用C实现,比Python循环快百倍

6. 大数据集处理优化

技巧

  • 读取时指定数据类型:dtype={'age': 'int8'}

  • 使用category类型处理低基数文本列

  • 分块读取:chunksize=10000


四、实战场景应用

7. 时间序列重采样

题目:将日频数据转为周平均

df.set_index('date', inplace=True)
weekly_mean = df.resample('W').mean()

扩展M(月)、Q(季)、A(年)

8. 分组TopN计算

题目:找出每个部门薪资前3的员工

df.groupby('dept').apply(lambda x: x.nlargest(3, 'salary'))

替代方案sort_values + head组合


五、高频易错题解析

9. 为什么用loc/iloc而不用直接索引?

错误示例

df[df.A > 5]['B'] = 10  # 可能触发SettingWithCopyWarning

正确写法

df.loc[df.A > 5, 'B'] = 10

原理:链式索引会导致视图与副本混淆

10. 内存优化技巧

诊断方法

df.info(memory_usage='deep')  # 查看内存占用
df.memory_usage(deep=True).sum() 

优化手段:降级数值类型、使用稀疏矩阵


六、面试真题模拟

11. 电商用户行为分析(真题改编)

需求

  • 从点击日志中统计每小时UV

  • 找出购买转化率最高的广告渠道

解题思路

  1. 时间字段转换:pd.to_datetime(df['timestamp']).dt.hour

  2. 使用pivot_table统计渠道转化率

12. 销售数据异常检测

技术方案

  • 计算Z-score:(df - df.mean())/df.std()

  • 标记超过3σ的异常点


七、备考资源推荐

  1. 官方文档

  2. 练手数据集

    • Kaggle泰坦尼克生存预测

    • UCI机器学习仓库

  3. 面试加分项

    • 掌握pd.eval()表达式优化

    • 了解Dask处理超大数据集

面试技巧:遇到复杂问题时先口述解题思路,再写代码!

本文通过「基础知识+高频考点+真题解析」的三段式结构,帮助读者建立完整的知识体系。建议:

  1. 在Jupyter Notebook中复现所有代码

  2. 针对薄弱点使用LeetCode进行专项练习

  3. 积累至少2个完整数据分析项目经验

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐