Back to Insights
Data Science·20 min read·Apr 2026·DS 工具栈

留学生 DS 求职工具栈完全指南 2026:Pandas/SQL/Scikit-learn/Tableau 实战

DS Job Search Toolkit 2026: Pandas, SQL, Scikit-learn & Tableau Practical Guide

本文系统梳理英国 DS 求职必备的四大工具栈:Pandas(数据处理)、SQL(数据查询)、Scikit-learn(机器学习)和 Tableau(数据可视化),每个工具都包含面试高频考点、代码示例和备考策略,帮助留学生在 DS 面试中展现扎实的工程能力。

核心结论(TL;DR)

两者都很重要,但侧重点不同。SQL 考察更频繁(85% 的 DS 面试),是最基础的技能要求;Pandas 在 Take-home Assignment 和 Technical Round 中考察更深入。建议先确保 SQL 熟练(LeetCode Hard 级别),再深入学习 Pandas 的高级用法。

为什么工具栈比算法更重要?

在 DS 面试中,很多候选人花大量时间刷 LeetCode 算法题,却忽视了 DS 工作中真正高频使用的工具。实际上,大多数 DS 面试考察的不是复杂的算法,而是你能否用 Pandas、SQL 和 Scikit-learn 高效地处理真实数据问题。

  • 根据 AT&T Career 学员的面试反馈,DS 面试中工具考察的频率分布如下:
  • SQL:出现在 85% 的 DS 面试中
  • Python/Pandas:出现在 78% 的 DS 面试中
  • 机器学习(Scikit-learn):出现在 65% 的 DS 面试中
  • 数据可视化(Tableau/Matplotlib):出现在 45% 的 DS 面试中

本文将逐一介绍这四个工具的面试高频考点和备考策略。

工具一:Pandas — 数据处理的核心

面试高频考点

1. 数据清洗

python
1import pandas as pd
2import numpy as np
3
4# 处理缺失值
5df.isnull().sum()  # 统计每列缺失值数量
6df.fillna(df.mean(), inplace=True)  # 用均值填充数值列
7df.dropna(subset=['critical_column'], inplace=True)  # 删除关键列为空的行
8
9# 处理重复值
10df.duplicated().sum()  # 统计重复行数量
11df.drop_duplicates(subset=['user_id', 'date'], keep='last', inplace=True)
12
13# 处理异常值(IQR 方法)
14Q1 = df['amount'].quantile(0.25)
15Q3 = df['amount'].quantile(0.75)
16IQR = Q3 - Q1
17df = df[(df['amount'] >= Q1 - 1.5 * IQR) & (df['amount'] <= Q3 + 1.5 * IQR)]

2. 数据聚合与分组

python
1# 多级分组聚合
2result = df.groupby(['country', 'product_category']).agg({
3    'revenue': ['sum', 'mean', 'count'],
4    'user_id': 'nunique'
5}).reset_index()
6result.columns = ['country', 'category', 'total_revenue', 'avg_revenue', 'transactions', 'unique_users']
7
8# 滚动窗口计算(时间序列)
9df['7day_rolling_avg'] = df.groupby('user_id')['daily_spend'].transform(
10    lambda x: x.rolling(7, min_periods=1).mean()
11)

3. 高频面试题:用户留存率计算

python
1# 计算每个月的用户留存率(Cohort Analysis)
2df['cohort_month'] = df.groupby('user_id')['signup_date'].transform('min').dt.to_period('M')
3df['activity_month'] = df['activity_date'].dt.to_period('M')
4df['months_since_signup'] = (df['activity_month'] - df['cohort_month']).apply(lambda x: x.n)
5
6cohort_data = df.groupby(['cohort_month', 'months_since_signup'])['user_id'].nunique().reset_index()
7cohort_pivot = cohort_data.pivot(index='cohort_month', columns='months_since_signup', values='user_id')
8cohort_size = cohort_pivot[0]
9retention = cohort_pivot.divide(cohort_size, axis=0)

备考建议:在 Kaggle 上完成 3–5 个完整的数据分析项目,重点练习 groupby + agg 的复杂用法和时间序列处理。

工具二:SQL — DS 面试的必考项

面试高频考点

1. 窗口函数(最高频考点)

sql
1-- 计算每个用户的累计消费金额(Running Total)
2SELECT 
3    user_id,
4    transaction_date,
5    amount,
6    SUM(amount) OVER (PARTITION BY user_id ORDER BY transaction_date) AS running_total
7FROM transactions;
8
9-- 计算每个产品在同类别中的销售排名
10SELECT 
11    product_name,
12    category,
13    sales,
14    RANK() OVER (PARTITION BY category ORDER BY sales DESC) AS rank_in_category,
15    sales - LAG(sales) OVER (PARTITION BY category ORDER BY sales DESC) AS diff_from_prev
16FROM products;
17
18-- 计算用户连续登录天数(经典难题)
19WITH login_groups AS (
20    SELECT 
21        user_id,
22        login_date,
23        ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date) AS rn,
24        DATE_SUB(login_date, INTERVAL ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date) DAY) AS grp_date
25    FROM (SELECT DISTINCT user_id, DATE(login_time) AS login_date FROM logins) t
26)
27SELECT user_id, MIN(login_date) AS start_date, MAX(login_date) AS end_date, COUNT(*) AS streak
28FROM login_groups
29GROUP BY user_id, grp_date
30ORDER BY streak DESC;

2. 复杂 JOIN 和子查询

sql
1-- 找出从未购买过的用户(LEFT JOIN + NULL 过滤)
2SELECT u.user_id, u.email
3FROM users u
4LEFT JOIN orders o ON u.user_id = o.user_id
5WHERE o.user_id IS NULL;
6
7-- 找出每个部门薪资最高的员工(相关子查询)
8SELECT e.name, e.department, e.salary
9FROM employees e
10WHERE e.salary = (
11    SELECT MAX(salary) 
12    FROM employees 
13    WHERE department = e.department
14);

备考建议:在 LeetCode 上完成所有 SQL 题目,重点攻克 Hard 级别的窗口函数题(如 185. Department Top Three Salaries、262. Trips and Users)。

工具三:Scikit-learn — 机器学习的标准库

面试高频考点

1. 完整的 ML Pipeline

python
1from sklearn.pipeline import Pipeline
2from sklearn.preprocessing import StandardScaler, OneHotEncoder
3from sklearn.compose import ColumnTransformer
4from sklearn.ensemble import GradientBoostingClassifier
5from sklearn.model_selection import cross_val_score, GridSearchCV
6from sklearn.metrics import classification_report, roc_auc_score
7
8# 定义特征预处理 Pipeline
9numeric_features = ['age', 'income', 'tenure']
10categorical_features = ['country', 'product_type']
11
12preprocessor = ColumnTransformer([
13    ('num', StandardScaler(), numeric_features),
14    ('cat', OneHotEncoder(handle_unknown='ignore'), categorical_features)
15])
16
17# 完整 Pipeline(预处理 + 模型)
18pipeline = Pipeline([
19    ('preprocessor', preprocessor),
20    ('classifier', GradientBoostingClassifier(random_state=42))
21])
22
23# 交叉验证
24cv_scores = cross_val_score(pipeline, X_train, y_train, cv=5, scoring='roc_auc')
25print(f"CV AUC: {cv_scores.mean():.3f} ± {cv_scores.std():.3f}")
26
27# 超参数调优
28param_grid = {
29    'classifier__n_estimators': [100, 200],
30    'classifier__max_depth': [3, 5],
31    'classifier__learning_rate': [0.05, 0.1]
32}
33grid_search = GridSearchCV(pipeline, param_grid, cv=3, scoring='roc_auc', n_jobs=-1)
34grid_search.fit(X_train, y_train)

2. 模型评估的正确姿势

面试中最常见的错误是只报告准确率(Accuracy),而不考虑类别不平衡问题。正确的评估方式:

python
1# 对于不平衡数据集(如欺诈检测),使用 AUC-ROC 和 Precision-Recall
2from sklearn.metrics import roc_auc_score, average_precision_score, confusion_matrix
3
4y_pred_proba = pipeline.predict_proba(X_test)[:, 1]
5print(f"AUC-ROC: {roc_auc_score(y_test, y_pred_proba):.3f}")
6print(f"Average Precision: {average_precision_score(y_test, y_pred_proba):.3f}")
7print(classification_report(y_test, pipeline.predict(X_test)))

备考建议:完成 Kaggle 上的 Titanic、House Prices 和 Credit Card Fraud Detection 项目,掌握完整的 ML Pipeline 构建流程。

工具四:Tableau — 数据可视化的利器

为什么 DS 需要学 Tableau?

Tableau 在英国 DS 求职中的重要性因公司类型而异:咨询公司(McKinsey/BCG)和传统金融机构(HSBC/Barclays)对 Tableau 的要求较高;科技公司(Google/Meta)更倾向于使用 Python 可视化库(Matplotlib/Plotly/Seaborn)。

面试高频考点

  1. 仪表板设计原则:如何在一个仪表板中展示关键业务指标?(KPI 卡片 + 趋势图 + 分布图 + 地图)
  2. 计算字段:如何用 Tableau 的 LOD(Level of Detail)表达式计算复杂指标?
  3. 数据混合:如何将来自不同数据源的数据在 Tableau 中合并分析?

Python 可视化替代方案

如果你的目标公司不要求 Tableau,掌握 Matplotlib + Seaborn + Plotly 同样可以展示数据可视化能力:

python
1import matplotlib.pyplot as plt
2import seaborn as sns
3import plotly.express as px
4
5# 用 Seaborn 绘制相关性热力图
6plt.figure(figsize=(10, 8))
7sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='coolwarm', center=0)
8plt.title('Feature Correlation Matrix')
9plt.tight_layout()
10
11# 用 Plotly 绘制交互式时间序列图
12fig = px.line(df, x='date', y='revenue', color='product_category',
13              title='Monthly Revenue by Product Category',
14              labels={'revenue': 'Revenue (£)', 'date': 'Month'})
15fig.show()

备考建议:在 Tableau Public 上发布 2–3 个完整的数据可视化项目,展示你的 Tableau 技能。如果目标是科技公司,重点练习 Plotly 和 Streamlit,用 Python 构建交互式数据应用。

常见问题 · FAQ

DS 面试中 Pandas 和 SQL 哪个更重要?+

两者都很重要,但侧重点不同。SQL 考察更频繁(85% 的 DS 面试),是最基础的技能要求;Pandas 在 Take-home Assignment 和 Technical Round 中考察更深入。建议先确保 SQL 熟练(LeetCode Hard 级别),再深入学习 Pandas 的高级用法。

需要学 Spark 或大数据工具吗?+

对于大多数 DS 岗位,Pandas + SQL 已经足够。Spark 和大数据工具(Hadoop/Hive)主要在 ML Engineer 和 Data Engineer 岗位中使用。如果你的目标是大型科技公司(Google/Amazon)的 Senior DS 或 MLE 岗位,了解 Spark 基础会有帮助,但不是必须的。

Scikit-learn 和 PyTorch/TensorFlow 哪个更适合 DS 面试?+

Scikit-learn 是 DS 面试的标准工具,覆盖了大多数传统机器学习算法(回归、分类、聚类、降维)。PyTorch/TensorFlow 主要用于深度学习,在 ML Engineer 和 AI Research 岗位中更重要。如果你的目标是 DeepMind 或 Google Brain 等研究机构,需要深入学习 PyTorch;如果目标是一般 DS 岗位,Scikit-learn 就足够了。

如何快速提升 SQL 水平?+

最有效的方法是在 LeetCode 上系统刷 SQL 题,按照以下顺序:基础查询(Easy)→ 多表 JOIN(Medium)→ 窗口函数(Medium/Hard)→ 复杂子查询(Hard)。建议每天做 2–3 道题,持续 4–6 周,可以覆盖 95% 的 DS 面试 SQL 考点。

DS 面试需要会 R 语言吗?+

R 在英国 DS 市场的使用率约为 20–30%,主要集中在学术研究、统计分析和生物医疗领域。如果你的目标是这些领域,R 是加分项。对于大多数科技公司和金融科技公司,Python 是唯一要求。如果时间有限,优先深入学习 Python,不必同时学习 R。

如何在 DS 面试中展示 Tableau 技能?+

最有效的方式是在 Tableau Public 上发布一个完整的仪表板项目,并在简历中附上链接。项目应该使用真实的公开数据(如 UK 政府开放数据或 Kaggle 数据集),展示 KPI 追踪、趋势分析和地理分布等常见业务场景。面试前,准备好解释你的设计决策(为什么选择这种图表类型?如何引导用户注意力?)。

Free Resource

免费领取【Data Science 求职全套资料包】

包含 CV 模板、面试题库、Networking 模板信及完整的求职 Timeline。已有 1,200+ 学员领取。

不发垃圾邮件,随时可取消订阅

Share

Related Insights

继续深入 · Data Science 赛道

Wei C.

Wei C. · Meta

Data Science16 min read

DS 面试三大题型详解 2026:Take-home Assignment / Case Study / Technical Round 全攻略

英国 DS 面试通常包含三种截然不同的题型:Take-home Assignment、Case Study 和 Technical Round。本文系统拆解每种题型的考察逻辑、评分标准和高分策略,帮助留学生在 Bloomberg、Revolut、HSBC、DeepMind 等顶级雇主的 DS 面试中脱颖而出。

阅读全文
Lin Z.

Lin Z. · Revolut

Data Science14 min read

Data Analyst vs Data Scientist vs ML Engineer:英国薪资对比 + 求职难度 + 职业路径 2026

很多留学生在选择 DS 方向时面临困惑:Data Analyst、Data Scientist 和 ML Engineer 到底有什么区别?哪个更容易找到工作?哪个薪资更高?本文基于 2026 年英国市场真实数据,系统对比三种职位的薪资、技能要求、求职难度和长期职业发展路径。

阅读全文
Wei C.

Wei C. · Meta

Data Science18 min read

英国留学生 DS 求职完整路线图 2026:从投递到 Offer 的全流程指南

本文为英国留学生提供一份完整的 Data Science 求职路线图,涵盖简历准备、投递策略、面试备考和 Offer 谈判的全流程。基于 AT&T Career 2024–2026 申请季 200+ 学员的真实求职数据,帮助你以最短时间获得目标 Offer。

阅读全文
Lin Z.

Lin Z. · Revolut

Data Science16 min read

DS vs Quant vs SWE:英国留学生如何选择最适合的数据/技术职业路径 2026

数学/CS/统计背景的留学生在英国求职时,通常面临三个高薪方向的选择:Data Science、Quantitative Finance 和 Software Engineering。本文从薪资、求职难度、技能要求、工作内容和长期发展四个维度,系统对比三条职业路径,帮助你做出最适合自己的选择。

阅读全文
Wei C.

Wei C. · Meta

Data Science18 min read

Bloomberg Data Science 面试全攻略 2026:留学生如何拿到 Bloomberg DS Offer

Bloomberg 是英国 DS 留学生最高频投递的金融科技雇主之一。本文系统梳理 Bloomberg DS 岗位的面试流程、技术考点(SQL/Python/ML/统计)、Behavioral 题型和薪资待遇,帮助你高效备战 Bloomberg DS 面试。

阅读全文
Sophie L.

Sophie L. · Google DeepMind

Data Science16 min read

英国 DS 简历优化完全指南 2026:留学生如何写出通过率 3 倍的 Data Science CV

本文系统梳理英国 DS 简历的核心结构、关键词策略、项目描述技巧和 ATS 优化方法,帮助留学生将简历过筛率从 10% 提升至 30%+,覆盖 Bloomberg/Google/Revolut/DeepMind 等顶级 DS 雇主的简历要求。

阅读全文