数据分析师必会!20个高频Python面试题(Numpy&Pandas篇)
摘要:掌握Numpy和Pandas是数据分析师的核心竞争力!本文精选20道企业高频面试题,覆盖数组操作、数据清洗、性能优化等核心场景,提供代码解析+避坑指南,助力面试冲刺!
一、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
-
找出购买转化率最高的广告渠道
解题思路:
-
时间字段转换:
pd.to_datetime(df['timestamp']).dt.hour
-
使用
pivot_table
统计渠道转化率
12. 销售数据异常检测
技术方案:
-
计算Z-score:
(df - df.mean())/df.std()
-
标记超过3σ的异常点
七、备考资源推荐
-
官方文档:
-
练手数据集:
-
Kaggle泰坦尼克生存预测
-
UCI机器学习仓库
-
-
面试加分项:
-
掌握
pd.eval()
表达式优化 -
了解Dask处理超大数据集
-
面试技巧:遇到复杂问题时先口述解题思路,再写代码!
本文通过「基础知识+高频考点+真题解析」的三段式结构,帮助读者建立完整的知识体系。建议:
-
在Jupyter Notebook中复现所有代码
-
针对薄弱点使用LeetCode进行专项练习
-
积累至少2个完整数据分析项目经验

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