跳至主要内容

什么是数据可视化?工具、技术与最佳实践完整指南

了解什么是数据可视化,以及为什么它是数据科学家的必备技能。探索多种可视化数据的方式,提升您的数据讲故事能力。
Kurtis Pykes
Kurtis Pykes

创建您的免费账户

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

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

想象一下,您不断滚动浏览无尽的数据行,却无法发现其中蕴含的洞见。对于如今的许多企业而言,这正是现实:每天约有402.74 百万太字节的数据被生成。那么,我们如何理解这一切?答案就在于数据可视化。

组织和个人借助数据来确定问题的根源并识别可付诸行动的步骤。然而,随着数据量不断增长,要理清其含义变得愈发具有挑战性。人的本能是寻找模式并建立结构——我们通过这种方式存储信息、获得新见解。当输入的数据没有以令人愉悦的视觉方式呈现时,识别这些模式、找到结构会变得困难,甚至在某些情况下是不可能的。

在本文中,我们将探讨数据可视化如何解决上述问题。我们还将讨论什么是数据可视化、它为何重要、提升技能的建议、常见图表,以及用于可视化数据的工具。

什么是数据可视化?

数据可视化是以图形方式呈现数据的过程。它是把数据转化为视觉语境的行为,可以通过图表、绘图、动画、信息图等实现。其背后的理念是让我们更容易识别数据中的趋势、异常值与模式。我们在Understanding Data Visualization 课程中更深入地探讨了这一概念。

数据从业者经常利用可视化来总结数据中的关键信息,并将这些信息传达给相关利益方。

例如,数据从业者可能会为管理人员创建数据可视化,管理人员再利用这些可视化来规划组织结构。另一个例子是数据科学家使用可视化来揭示数据的底层结构,从而更好地理解他们的数据。

鉴于上文对数据可视化目的的界定,我们可以从“什么是数据可视化”中得到两个关键要点:

1)让数据更易获取:让事物更易获取的最佳方式是保持简洁。这里的“简洁”需要结合语境:对十岁儿童来说直观易懂的内容,未必适用于博士学位持有者。因此,数据可视化是一种让相关受众更容易获取数据的技术。

2)一种沟通方式:这一点是第一点的延伸。要实现有效沟通,房间里的每个人都应“说同一种语言”。无论您是独立完成任务还是与团队合作,可视化都应为可能查看它的人提炼出有意义的洞见。CEO 可能更希望看到能转化为行动的洞见,而机器学习团队可能更关注模型性能方面的洞见。

简而言之,数据可视化是一种让人更容易识别数据中的模式或趋势的技术。

我们的数据可视化速查表以图像方式呈现数据可视化的核心概念

为什么数据可视化对数据科学家如此重要?

数据科学是一个跨学科领域,使用科学方法、流程、算法和系统,从嘈杂、结构化与非结构化数据中提取知识与洞见(参见我们的“什么是数据科学”指南获取更深入解释)。然而,数据科学家面临的挑战在于:面对原始数据时并非总能“连点成线”;这正是数据可视化极具价值之处。让我们看看为何数据可视化对数据科学家而言是如此强大的工具。

可发现性与学习

数据科学家需要对所用数据有良好的理解。数据可视化使他们能够突显数据中最具信息量的部分,帮助自己(及他人)快速、轻松地把握数据中发生的事情。例如,在表格中识别趋势要比以可视化方式看到它困难得多。我们将在后文更详细地讨论这一点。

讲故事

数百年来,故事一直被用于传播信息。故事之所以动人,是因为它能与受众建立情感连接。这种连接使受众对他人的经历有更深刻的理解,从而让信息更容易被记住。数据故事讲述是一种可视化形式:它帮助数据科学家理解自己的数据,并以易于理解的格式与他人分享。

效率

洞见当然也可以从数据库中获得(在某些情况下),但这需要极高的专注度,且会带来不小的业务成本。在此类情境下使用数据可视化要高效得多。比如,如果目标是识别 2024 年所有出现亏损的公司,那么用红色高亮利润小于零的公司、用绿色高亮利润大于零的公司,将持平的公司保持中性,这样做比手动解析数据库并逐一标注公司要高效得多。

美感

虽然原始数据可能信息丰富,但它往往不够美观或吸引人。数据可视化是一种将信息量大但乏味的数据转化为美观而富有洞见的知识的技术。让数据更具视觉吸引力,契合了我们以视觉为主的天性。换言之,当信息能够刺激我们的视觉感官时,我们处理信息的速度会更快。

如何学习数据可视化

数据可视化是所有与数据打交道的人都必须掌握的一项关键技能,从业务分析师到数据科学家皆是如此。掌握它能让您有效传达洞见,使数据驱动决策更清晰、更有影响力。如果您在思考从何入手,我们提供了多种资源,旨在为您数据可视化之旅的每个阶段提供指引——无论您是初学者还是希望精进高级技能。

您可以这样开始:

1. 从基础入门

如果您完全是数据可视化新手,在深入学习高级工具和技术之前,理解基础至关重要。DataCamp 提供结构化的学习路径,引导您掌握这些基础。

  • 推荐资源:Understanding Data Visualization。该课程将带您了解数据可视化的核心概念,教您如何设计和解读简洁而有效的可视化。课程涵盖常见图表类型、可视化最佳实践,以及如何以批判性思维看待数据。
  • 涵盖主题:
    • 基本图表类型(条形图、饼图、折线图)
    • 数据可视化中的常见错误
    • 如何为您的数据选择合适的图表类型

2. 学习使用零代码工具进行可视化

对于尚不熟悉编程的人,我们提供了一些工具课程,允许您在不写代码的情况下创建可视化。这些工具非常适合业务用户、管理者,以及任何希望快速创建有洞见可视化的人。

  • 推荐资源:Power BI Fundamentals。Power BI 是一款功能强大的零代码工具,用于创建交互式仪表板和报告。该技能路径将教您如何利用其直观界面创建引人注目的可视化,高效传达数据洞见。
  • 推荐资源:Tableau Fundamentals。Tableau 是另一款广受欢迎的工具,可用于创建交互性强、视觉美观的仪表板。凭借拖放功能,您可以轻松探索数据并创建有洞见的可视化。
  • 涵盖主题:
    • 构建交互式仪表板
    • 为可视化进行数据清洗与准备
    • 视觉化叙事的最佳实践

3. 通过编码开发高级可视化技能

如果您准备好亲自上手编码,学习使用 Python 或 R 创建可视化,将大幅拓展您自定义与自动化数据可视化的能力。

  • 推荐资源:Data Visualization with Python。Python 提供了多种强大的可视化库(如 Matplotlib、Seaborn 和 Plotly),可创建从简单折线图到复杂交互式可视化的一切。该路径将帮助您夯实基于 Python 的可视化工具基础。
  • 推荐资源:Data Visualization with R。R 在统计计算与数据可视化方面被广泛使用。尤其是 ggplot2,被业界视为创建美观且信息丰富图形的标准。在该路径中,您将学习如何创建高质量可视化,并理解 R 在数据处理方面的强大能力。
  • 涵盖主题:
    • 使用 Matplotlib、Seaborn 和 ggplot2 创建自定义可视化
    • 理解高级图表,如直方图、热图与散点图
    • 使用 Plotly 和 Shiny 构建交互式可视化

4. 通过项目练习

在掌握基础之后,练习是精通数据可视化的关键。DataCamp 的实操项目让您将技能应用到真实世界数据集中,帮助您积累实践经验。

  • 推荐资源:数据可视化项目。这些引导式项目让您处理真实数据集,练习所学内容。您将从零开始创建可视化,在数据探索流程与有效视觉传达设计方面积累经验。
  • 示例项目:
    • 探索乐高的演变——学习使用 Python 的 Matplotlib 与 Seaborn 创建可视化,探索乐高套装生产的趋势。
    • 理解大学学位中的性别差距——使用 Python 创建折线图与面积图,展示不同专业中性别差异的趋势。

5. 持续学习并保持更新

数据可视化是一个不断演进的领域,新的工具与技术层出不穷。DataCamp 会定期更新课程并推出新课程,帮助您掌握最新趋势。

  • 推荐资源:数据可视化速查表。随手备一份速查表,作为常用图表、设计最佳实践,以及根据数据与受众选择合适可视化的参考。
  • 探索新工具:在进阶过程中,了解诸如 Plotly Dash 或 D3.js(JavaScript 库)等前沿工具,保持领先。

数据可视化工具

数据科学家、数据分析师等数据从业者通常会借助数据可视化工具,以更高效地工作并更有效地沟通他们的发现。

这些工具可分为两类:1)零代码;2)基于代码。让我们分别看看各类别中的热门工具。

零代码工具

并非您组织中的每个人都精通技术。然而,不会编程不应成为您从数据中提炼洞见的障碍。即使不会编程,仍可以具备数据素养——能够阅读、书写、交流并运用数据进行推理,从而做出更优的数据驱动决策。

因此,零代码工具为可能没有编程知识的人提供了一种易用的解决方案(当然,有编程技能的人也可能选择使用它们)。更正式地说:零代码工具是图形用户界面,具备运行原生脚本以处理与增强数据的能力。

一些零代码工具的示例包括:

Power BI

Power BI 是微软推出的、广受欢迎的数据可视化与商业智能解决方案。它是全球最流行的商业智能工具之一,用于报告、自助分析和预测分析。该平台使您能够快速清洗、分析并开始从组织数据中发现洞见。

如果您对学习 Power BI感兴趣,建议从 Datacamp 的Power BI Fundamentals 技能路径开始。

Tableau

Tableau 也是全球最受欢迎的商业智能工具之一。其简洁的拖放功能让任何人都能通过交互式可视化轻松开始从组织数据中发掘洞见。

DataCamp 的 Tableau Fundamentals 技能路径是入门 Tableau 的绝佳方式。

ChatGPT

ChatGPT 很快就成为帮助人们可视化数据的工具。正如我们在GPT-4o文章中所探讨的,只需几个提示,您就可以使用该工具来可视化数据中的趋势。生成式 AI 正在改变我们看待数据的方式,未来可期!查看我们的ChatGPT Fundamentals 技能路径,了解如何使用这一强大的工具。

基于代码的可视化

如果您更懂技术,可能更愿意使用编程语言来可视化数据。随着数据产出的增加,Python 与 R 因其支持数据处理的多样化包而愈发流行。

让我们来看看其中一些包。

Python 包

Python 是一种高级、解释型、通用编程语言。它提供了多种优秀的绘图库用于数据可视化,例如:

Data Visualization with Python 技能路径是一系列出色课程,帮助您使用 Python 最流行、最强大的可视化库,全面提升数据科学技能。

R 包

R 是一种用于统计计算与绘图的编程语言。它是数据分析的强大工具,借助其多个包几乎可以创建任何类型的图形。常用的 R 数据可视化包包括:

  • ggplot2
  • Lattice
  • highcharter
  • Leaflet
  • RColorBrewer
  • Plotly

查看 Data Visualization with R 与 Interactive Data Visualization in R 技能路径,用 R 语言进一步提升您的可视化技能。

数据可视化中常用的图表

我们已经确认,数据可视化是呈现与沟通数据的有效方式。本节将介绍如何使用 Python 与其数据可视化包 Matplotlib 创建一些常见的图表,作为大多数可视化任务的有效起点。我们也会分享每种图表的使用场景。

您可以查看这个DataLab 工作簿获取完整代码。

频率表

频率表非常适合表示某个事件或取值出现的次数。我们通常用它来计算数据的描述性统计。例如,我们可能希望了解某个特征对最终决策的影响。

让我们创建一个示例频率表。我们将使用 UCI 机器学习库中的汽车评估数据集和 Pandas 来构建频率表。

import pandas as pd"""source: https://heartbeat.comet.ml/exploratory-data-analysis-eda-for-categorical-data-870b37a79b65"""def frequency_table(data:pd.DataFrame, col:str, column:str):    freq_table = pd.crosstab(index=data[col],                            columns=data[column],                                     margins=True)    rel_table = round(freq_table/freq_table.loc["All"], 2)    return freq_table, rel_tablebuying_freq, buying_rel = frequency_table(car_data, "class", "buying")print("Two-way frequency table")print(buying_freq)print("---" * 15)print("Two-way relative frequency table")print(buying_rel)

Frequency Table

条形图

条形图是最简单却最有效的数据可视化之一。它通常用于比较不同类别之间的差异。例如,我们可以用条形图来可视化欺诈与非欺诈案例的数量。另一个用例是用条形图可视化某部电影各星级评分的频次。

下面是在 Python 中创建条形图的方法:

"""Starter code from tutorials pointsee: https://bit.ly/3x9Z6HU"""import matplotlib.pyplot as plt# Dataset creation.programming_languages = ['C', 'C++', 'Java', 'Python', 'PHP', "Other", "None"]employees_frequency = [23, 17, 35, 29, 12, 5, 38]# Bar graph creation.fig, ax = plt.subplots(figsize=(10, 5))plt.bar(programming_languages, employees_frequency)plt.title("The number of employees competent in a programming langauge")plt.xlabel("Programming languages")plt.ylabel("Frequency")plt.show()

Bar Graph

饼图

饼图是另一种简单高效的可视化工具。它通常用于展示并比较整体中的各部分。例如,用饼图表示智能手机的市场份额就是一个不错的用例。我们来用 Python 实现一下。

"""Example to demonstrate how a pie chart can be used to represent the marketshare for smartphones.Note: These are not real figures. They were created for demonstration purposes."""import numpy as npfrom matplotlib import pyplot as plt# Dataset creation.smartphones = ["Apple", "Samsung", "Huawei", "Google", "Other"]market_share = [50, 30, 5, 12, 2]# Pie chart creationfig, ax = plt.subplots(figsize=(10, 6))plt.pie(market_share,        labels = smartphones,        autopct='%1.2f%%')plt.title("Smartphone Marketshare for April 2021 - April 2022",          fontsize=14)plt.show()

Pie Chart

折线图与面积图

折线图非常适合用来可视化一段时间内数据的趋势或变化。例如,我们可以用折线图来展示七月份运动鞋的销售数量。

import matplotlib.pyplot as plt# Data creation.sneakers_sold = [10, 12, 8, 7, 7, 10]dates = ["Jul '1", "Jul '7", "Jul '14", "Jul '21", "Jul '28", "Jul '31"]# Line graph creationfig, ax = plt.subplots(figsize=(10, 6))plt.plot(dates, sneakers_sold)plt.title("Sneakers sold in Jul")plt.ylim(0, 15) # Change the range of y-axis.plt.xlabel("Dates")plt.ylabel("Number of sales")plt.show()

Line Chart

面积图是折线图的延伸,不同之处在于折线下方的区域用颜色或图案填充。

下面是将上面的同一数据绘制为面积图:

# Area chart creationfig, ax = plt.subplots(figsize=(10, 6))plt.fill_between(dates, sneakers_sold)plt.title("Sneakers sold in Jul")plt.ylim(0, 15) # Change the range of y-axis.plt.xlabel("Dates")plt.ylabel("Number of sales")plt.show()

Area Chart

我们也常见到堆叠面积图,用于展示多变量随时间的变化。例如,我们可以用堆叠面积图来可视化七月份售出的运动鞋按品牌的构成,而不是总销量。

# Data creation.sneakers_sold = [[3, 4, 2, 4, 3, 1], [3, 2, 6, 1, 3, 5], [4, 6, 0, 2, 1, 4]]dates = ["Jul '1", "Jul '7", "Jul '14", "Jul '21", "Jul '28", "Jul '31"]# Multiple area chart creationfig, ax = plt.subplots(figsize=(10, 6))plt.stackplot(dates, sneakers_sold, labels=["Nike", "Adidas", "Puma"])plt.title("Sneakers sold in Jul")plt.ylim(0, 15) # Change the range of y-axis.plt.xlabel("Dates")plt.ylabel("Number of sales")plt.legend()plt.show()

Stacked Area Chart

上述每个图都展示了完全相同的数据,只是呈现方式不同。

直方图

直方图用于表示数值变量的分布。

import numpy as npimport matplotlib.pyplot as pltdata = np.random.sample(size=100) # Graph will change with each runfig, ax = plt.subplots(figsize=(10, 6))plt.hist(data, bins=6)plt.title("The distribution of data")plt.xlabel("Data")plt.ylabel("Frequency")plt.show()

Histograms

散点图

散点图用于可视化两个不同变量之间的关系。我们也常会添加一条最佳拟合线来揭示数据的整体走向。一个散点图的用例是表示气温如何影响冰淇淋销量。

import numpy as npimport matplotlib.pyplot as plt# Data creation.temperature = np.array([30, 21, 19, 25, 28, 28]) # Degree's celsiusice_cream_sales = np.array([482, 393, 370, 402, 412, 450])# Calculate the line of best fitX_reshape = temperature.reshape(temperature.shape[0], 1)X_reshape = np.append(X_reshape, np.ones((temperature.shape[0], 1)), axis=1)y_reshaped = ice_cream_sales.reshape(ice_cream_sales.shape[0], 1)theta = np.linalg.inv(X_reshape.T.dot(X_reshape)).dot(X_reshape.T).dot(y_reshaped)best_fit = X_reshape.dot(theta)# Create and plot scatter chartfig, ax = plt.subplots(figsize=(10, 6))plt.scatter(temperature, ice_cream_sales)plt.plot(temperature, best_fit, color="red")plt.title("The impact of weather on ice cream sales")plt.xlabel("Temperature (Celsius)")plt.ylabel("Ice cream sales")plt.show()

Scatterplots

热图

热图通过颜色编码来表示两个项之间的强度。一个用例是用于展示天气预报(例如,用红色区域表示将有强降雨)。您也可以用热图来表示网站流量,以及几乎任何三维数据。

为了演示如何在 Python 中创建热图,我们将使用另一个基于 Matplotlib 的高级可视化库 Seaborn。

import numpy as npimport seaborn as snsimport matplotlib.pyplot as pltdata = np.random.rand(8, 10) # Graph will change with each runfig, ax = plt.subplots(figsize=(10, 6))sns.heatmap(data)plt.title("Random Uniform Data")plt.show()

Heatmaps

矩形树图

矩形树图通过嵌套矩形来表示层级数据。它非常适合可视化包含大量类别的“部分-整体”关系,如销售数据。

为了在 Python 中构建矩形树图,我们将使用另一个用于创建交互式图形的库 Plotly。

"""Source: https://plotly.com/python/treemaps/"""import plotly.express as pximport numpy as npdf = px.data.gapminder().query("year == 2007")fig = px.treemap(df, path=[px.Constant("world"), 'continent', 'country'], values='pop',                  color='lifeExp', hover_data=['iso_alpha'],                  color_continuous_scale='RdBu',                  color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))fig.show()

Treemaps

打造高效数据可视化的 3 个技巧

数据可视化是一门艺术。提升技能需要时间与练习。以下三条建议可助您走在正确的方向上:

技巧一:提出具体问题

创建有效数据可视化的第一步、也是最关键的一步,是心中有一个清晰具体的问题。否则,您可能会产出焦点不明、难以解读的可视化。

  • 示例:如果您在分析销售数据,与其问“今年销售趋势如何?”,不如更具体些:“与第二季度相比,第三季度美国市场上 X 产品的线上销售有何变化?”

明确的问题有助于您将可视化聚焦于直接作答,避免无关信息干扰或压倒受众。

  • 反面示例:一个凌乱的仪表板,展示过去五年所有区域、所有产品类型、所有销售渠道的总销售额。
  • 正面示例:一个简单的条形图,仅关注某一产品在美国市场第二季度与第三季度的线上销售对比。

技巧二:选择合适的可视化形式

并非所有可视化都适用所有场景。选择错误的图表类型会扭曲您的信息并使受众困惑。每种图表都有其优势,适用于特定类型的数据。

  • 示例:如果您需要展示整体中的占比,饼图可能合适。但如果要比较随时间的变化,折线图或条形图会更适用。

图表类型选择要点:

  • 条形图:用于比较不同类别。
  • 折线图:最适合展示随时间变化的趋势。
  • 饼图:用于展示整体中的占比。
  • 散点图:用于识别两个变量之间的关系。
  • 反面示例:用饼图展示收入的时间变化。
  • 正面示例:用折线图突出月度收入变化,便于识别趋势。

要点:将图表类型与您要解决的具体问题或所用数据相匹配,以提升清晰度。

技巧三:突出最重要的信息

在创建可视化时,务必要引导受众关注关键信息。合理使用颜色、大小和设计元素可以帮助您强调最重要的部分。

  • 示例:假设您在展示多种产品的营收数据。对畅销产品使用醒目的颜色,对其他产品使用色调较淡的颜色,这样可以让观众轻松聚焦于最关键的信息。

以下方法可以帮助您突出关键信息:

  • 使用对比色:用明显不同的颜色突出重要数据点。
  • 变化大小:将关键数据点做得更大或更醒目。
  • 注释:在图表上直接添加简短文字说明或高亮,吸引注意力到关键区域。
  • 反面示例:散点图中所有点的颜色与大小都相同,难以识别模式或关键点。
  • 正面示例:散点图中用更大、更醒目的点强调离群点或趋势,并用颜色梯度表示强度。

要点:诸如颜色、大小、标签等细节设计,能极大提升受众快速把握关键信息的能力。

结语

总而言之,高效的可视化利用了我们识别模式的天性。通过颜色、形状、大小等手段,可以极其有效地突出您想展示的最重要信息。

数据可视化是一门艺术;做好它需要提出具体问题、选择合适的可视化形式,并突出最重要的信息。若您的第一次尝试并不出色,不必气馁;提升技能需要时间与练习。DataCamp 提供的丰富数据可视化课程将是帮助您成为可视化高手的绝佳资源。

数据可视化常见问答

数据可视化中最常见的错误有哪些?

常见错误包括在图表中塞入过多数据,导致观众不堪重负。另一个错误是选择了错误的图表类型,例如在适合使用条形图或折线图的场景下用了饼图。对颜色的使用不当(如对比度不足)也会让可视化难以解读。最后,忽视受众的专业程度会导致沟通不畅,因为可视化可能过于复杂或过于简单。

如何用可视化提升讲故事的效果?

要增强叙事性,首先聚焦于您的可视化要回答的一个清晰问题。确保通过使用颜色、大小或注释来突出关键信息,引导观众的注意力。按逻辑顺序组织您的可视化,带领观众循序渐进地探索数据,使叙事更加顺畅自然。

何时应使用交互式可视化?

当数据集很大、无法一次性完整展示时,交互式可视化尤为理想,它允许用户筛选或放大特定数据点。当受众多元时也很有用,不同的利益相关者可以探索与自己最相关的洞见。此外,在需要决策的场景中,交互式可视化可支持利益相关者实时与数据交互并探索不同情景。

我该如何在零代码与基于代码的工具之间做选择?

零代码工具(如 Power BI 和 Tableau)最适合需要快速、易用可视化而不具备编程技能的人群,非常适合业务专业人士和管理者。基于代码的工具(如 Python 的 Matplotlib 或 R 的 ggplot2)为熟悉编程的用户提供更强的灵活性与自定义能力,特别适合处理复杂数据并需要完全掌控可视化过程的数据科学家或分析师。

如何确保我的数据可视化具备无障碍与可访问性?

为提升可访问性,请使用适合色盲的配色方案,以便色觉缺陷者也能准确解读图表。在报告或演示中包含可视化时,请为图形添加替代文本说明,以便依赖屏幕阅读器的用户使用。对于交互式可视化,确保导航直观易懂,使不同技能水平的用户都能顺畅地与数据交互。

Kurtis Pykes

作者

Kurtis Pykes

主题