跳至主要内容

数据科学家有哪些共同的技能与背景?

从一百万个与数据相关的职位中获取洞察。
Khuyen Tran
Khuyen Tran

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

动机

2012 年,哈佛商业评论将数据科学家评为 21 世纪最性感的职业。从那以后,“数据科学家”这一称谓越来越受欢迎。

上图展示了 2016 至 2021 年间 Google 搜索中“data science”这一关键词的关注度。可以看到,过去五年里,人们对数据科学的兴趣稳步上升。

数据科学家不仅薪酬优渥,还能运用多样化技能,从真实世界数据中提炼有趣洞见,并通过分析对社会产生影响。因此,它被称为 21 世纪最性感的职业也就不足为奇了。

不过,在申请数据科学岗位之前,值得先分析一下数据科学家的特征与背景。了解他们的背景与技能,有助于您补齐相关能力,在众多候选人中脱颖而出。

一些值得探究的有趣问题包括:

  • 大多数数据科学家具备哪些技能?
  • 这些技能与机器学习工程师、数据分析师、数据工程师等其他职位的技能有何不同?
  • 最热门的专业是什么?
  • 成为数据科学家是否需要硕士或博士学位?
  • 数据科学领域的男女比例如何?
  • 多数数据科学岗位分布在哪里?
  • 不同数据相关岗位的热度如何随时间变化?
  • 数据科学家的技能如何随时间演变?

获取数据

我们将使用来自全球的 16 万多名数据科学家、57 万名数据分析师、10 万多名数据工程师,以及 1.9 万多名机器学习工程师的数据。数据集提取自 Diffbot,即全球最大的知识图谱。关于如何使用 Diffbot 的更多说明,请见这里。

为便于您跟进,本文使用的全部数据已上传至此仓库,均可免费访问与下载。

包含本文代码的 notebook 在这里。如果您想直接从 Diffbot 获取数据,也可改为使用这个 notebook。

数据科学家、数据分析师、数据工程师与机器学习工程师的顶级技能是什么?我们可以用这份包含这些职位人群前 100 大热门技能的数据来回答。

import pandas as pd
skill_count = pd.read_csv(
"https://media.githubusercontent.com/media/khuyentran1401/dataset/master/data_science_market/all_skills.csv",
    index_col=0,
)

# Show the top 10 rows
skill_count.head(10)

我们将用该数据集分析特定数据相关岗位中不同编程语言的流行度,并使用在 Observable 上创建的气泡矩阵进行可视化。

气泡矩阵通过气泡大小与颜色来表示二维信息。行表示职位,列表示语言。气泡越大,说明该语言在某一职位类别中出现越频繁。

为了确定气泡的大小,我们将计算某语言的出现频次与所有语言及职位中的最大频次之比。

languages = skill_count[
    skill_count["skill"].isin(
        ["python", "r", "sql", "c", "c++", "matlab", "java", "javascript"]
    )
]

languages["Ratio to All Skills"] = languages["count"].apply(
    lambda c: c / max(skill_count["count"])
)
# View languages used by data analysts
languages[languages["Title"] == "Data Analyst"]

当气泡的出现次数超过某个阈值时会被高亮显示。我们可以用滑块选择高亮阈值。例如,将阈值设为 100,000 时,只有计数超过 100,000 的气泡会被标为深紫色。

这个图还有一个很酷的功能:可以按职位对气泡排序。我们用它来找出每个职位的顶级技能。

您可以在这里与该图交互。基于该图,我们可以看到:

  • 数据分析师的前三大技能依次为:SQL、Python、R
  • 数据工程师的前三大技能依次为:SQL、Python、Java
  • 数据科学家的前三大技能依次为:Python、R、SQL
  • 机器学习工程师的前三大技能依次为:Python、Java、C++

分析教育背景

与数据相关岗位中最受欢迎的专业是什么?为回答这个问题,我们将下载显示某一职位热门专业频次的数据。

!wget 'majors_df.pkl' 'https://github.com/khuyentran1401/dataset/raw/master/data_science_market/majors_df.pkl'

import pickle

majors_df = pickle.load(open("majors_df.pkl", "rb"))
majors_df["data scientist"]

我们来把这个数据集可视化,以便更好地理解。先创建一个可视化某职位专业分布的函数。

import plotly.express as px


def plot_majors(title: str, majors_df: dict):
    majors = majors_df[title]
    return px.bar(data_frame=majors, x="name", y="value")

数据科学家的热门专业:

plot_majors('data scientist', majors_df)

在这里与图表交互。由于许多数据科学岗位需要编程与数学知识,数据科学家的前两大热门专业是计算机科学与数学并不意外。

数据工程师的热门专业:

plot_majors('data engineer', majors_df)

在这里与图表交互。由于数据工程师的工作需要掌握多种技术与编程语言,因此多数数据工程师主修计算机科学与信息技术而非数学是合乎情理的。

数据分析师的热门专业:

plot_majors('data analyst', majors_df)

在这里与图表交互。数据分析师的前三大热门专业是工商管理、计算机科学与经济学。这一结果合理,因为数据分析师的工作涉及对数据的解读。

机器学习工程师的热门专业:

plot_majors('machine learning engineer', majors_df)

在这里与图表交互。我们也可以用圆形打包图来观察不同岗位专业分布的差异。

您可以在这里与上述图表交互。

分析学历

您可能会看到很多数据科学家岗位在职位描述中要求硕士或博士学位。但实际有多少数据科学家拥有硕士或博士学位呢?

我们通过下载这份展示特定职位不同学历数量的数据来回答。

degree_df = pd.read_csv(
"https://media.githubusercontent.com/media/khuyentran1401/dataset/master/data_science_market/degrees.csv"
)

degree_df.head(10)

可以看到,学历包括:

  • 高中
  • 副学士
  • 学士
  • 硕士
  • 博士
  • 证书

我们用气泡矩阵来可视化这些数据。

您可以在这里操作该图。从图中可以看到,所有数据相关岗位中最普遍的学历是学士。这很合理,因为大多数数据相关工作至少要求学士学位,而拥有硕士或博士的人也都拥有学士学位。

以下是分组条形图的视图:

值得注意的是,拥有学士学位的数据分析师数量几乎是拥有硕士学位的数据分析师的两倍。然而,拥有学士学位的数据科学家数量与拥有硕士学位的数据科学家数量大致相当。

这意味着,相较于数据分析师,在获得学士学位后继续攻读更高学位的数据科学家占比更高。

分析性别

数据相关岗位中男女比例如何?我们用显示各职位男女数量的数据来回答。

gender_df = pd.read_csv(
    "https://media.githubusercontent.com/media/khuyentran1401/dataset/master/data_science_market/genders.csv"
)
gender_df.head(10)

接下来,用分组条形图进行可视化。

从图中可以看到:

  • 除数据录入外,所有数据相关岗位中男性多于女性。
  • 在数据分析师与统计学家等岗位中,男性人数几乎是女性的两倍。
  • 在数据科学家、数据工程师、机器学习工程师等岗位中,男性人数超过女性人数的两倍。

分析地区分布

哪些州对数据科学家最热门?我们先获取这份显示各州数据科学家数量的数据。

state_jobs = pd.read_csv(
    "https://media.githubusercontent.com/media/khuyentran1401/dataset/master/data_science_market/state_jobs.csv"
)
state_jobs.head(10)

接着,我们用 folium(一个用于创建地图的 Python 库)来绘制。

state_geo = "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json"

m = folium.Map(location=[48, -102], zoom_start=3)

folium.Choropleth(
    geo_data=state_geo,
    name="choropleth",
    data=state_jobs,
    columns=["state", "count"],
    key_on="feature.id",
    fill_color="YlGn",
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name="Number of Data Science Jobs",
).add_to(m)

folium.LayerControl().add_to(m)

m

您可以在这里与地图交互。从图中可见,数据科学家数量最多的州是加利福尼亚州。第二、第三与第四分别是纽约州、马萨诸塞州与得克萨斯州。

对数据科学家最热门的前 25 个国家是哪些?先下载并加载这份显示各国数据科学家数量的数据:

!wget 'countries.pkl' 'https://github.com/khuyentran1401/dataset/raw/master/data_science_market/countries.pkl'

countries = pickle.load(open("countries.pkl", "rb"))

然后绘制数据科学家最热门的 25 个国家:

def plot_top_25_locations(title: str, locations: dict):
    data = locations[title]
    return px.bar(data_frame=data, x="location", y="count")

plot_top_25_locations("data scientist", countries)

在这里与图表交互。对数据科学家最热门的五个国家是:

  • 美国
  • 印度
  • 法国
  • 英国
  • 德国

对数据科学家最热门的 25 座城市是哪些?我们将下载显示各城市数据科学家数量的数据:

!wget 'cities.pkl' 'https://github.com/khuyentran1401/dataset/raw/master/data_science_market/cities.pkl'

cities = pickle.load(open("cities.pkl", "rb"))

数据科学家最热门的 25 座城市的图表:

在这里与图表交互。从上图可以看到,最热门的五座城市是:

  • 旧金山
  • 班加罗尔
  • 伦敦
  • 巴黎
  • 纽约市

与数据科学家这一角色相关的头衔多种多样,例如高级数据科学家、初级数据科学家、数据科学实习生等。如果能看到这些头衔的受欢迎程度就更好了。

我们先获取包含与数据科学家相关的所有头衔计数的数据:

!wget "top_titles.pkl" "https://github.com/khuyentran1401/dataset/raw/master/data_science_market/top_titles.pkl"

top_titles = pickle.load(open("top_titles.pkl", "rb"))
top_titles["data scientist"]

与数据科学家相关的热门头衔条形图:

在这里与图表交互。我们也可以使用圆形打包图来可视化部分数据相关职位头衔的多样性。

您可以在这里自行与图表交互。

关键词

“data scientist”这一关键词在 Google 搜索中的关注度如何随时间变化?我们可以用 pytrends 获取数据,再用 Plotly Express 绘图:

from pytrends.request import TrendReq


def plot_keyword_trend(title: str):
    pytrends = TrendReq(hl="en-US", tz=360)
    pytrends.build_payload(kw_list=[title])

    df = pytrends.interest_over_time()
    return px.line(data_frame=df, y=title)


plot_keyword_trend("data scientist")

在这里与图表交互。看起来 2016 至 2021 年间,“data scientist”这一关键词的关注度近似线性上升。

职位数量随时间的变化

各类职位的数量如何随时间变化?我们可以用展示完整职位数量随时间变化的数据来探究。

dates_df = pd.read_csv(
"https://media.githubusercontent.com/media/khuyentran1401/dataset/master/data_science_market/dates.csv",
    index_col=0)
dates_df.head(10)

数据第一行显示 1988 年有 40 名数据科学家。第二行显示 1989 年有 52 名数据科学家。

上述数据的折线图:

px.line(dates_df, x="date", y="value", color="name")

在这里与图表交互。图中的一些关键信息:

  • 统计学家的人数随时间较为稳定。
  • 2010 年之前,数据录入是所有数据相关岗位中最常见的工作。
  • 2010 年,数据分析师超过了数据录入。
  • 2013 年,数据科学家、数据分析师与数据工程师均超过统计学家;其中数据科学家呈指数级增长,而人工数据录入的重要性大幅下降。
  • 2019 年,机器学习工程师这一角色终于超过了统计学家。

我们用条形图竞赛来观察不同数据相关岗位排名的变化:

相当酷!通过这张图,我们可以看到排名发生变化的确切时间。您可以在这里自行可视化。

技能数量随时间的变化

数据科学家顶级技能的出现频率如何随时间变化?我们用展示技能数量随时间变化的数据来观察。

skills_df = pd.read_csv(
    "https://media.githubusercontent.com/media/khuyentran1401/dataset/master/data_science_market/skills_over_time.csv",
    index_col=0,
)
skills_df.head(10)

接下来,我们用上述数据创建条形图竞赛:

可以看到,2014 年之前,教学与经济学是数据科学家中最受欢迎的两项技能。然而,2014 年之后,Python 超过了这两项,成为最受欢迎的技能。

结论

您是否已准备好展示自己的专业数据科学技能?欢迎查看 DataCamp 的认证项目与职业服务,助您拿下心仪的数据科学岗位。

主题