跳至主要内容

如何在 Workspace 中使用任意数据集练习 SQL

了解 DataCamp Workspace 如何优化使用 Jupyter 笔记本与 SQL 的体验。学习如何轻松编写 SQL 查询、连接数据库、分析 CSV 文件,并利用 AI 助手的强大功能
· 9分钟 阅读

使用 AI 探索

DataCamp Workspace 构建于 Jupyter 笔记本之上,并对体验进行了优化,助您更高效地工作。

数据分析师和数据科学家的一个常见痛点是:要将 Jupyter 笔记本连接到数据库以开始工作并不容易。对于初学者来说,这个问题会更突出:如果连数据库都连不上,又该如何学习编写 SQL 呢?

无论是练习技能还是实际工作,Workspace 都能让您轻松编写 SQL。本教程将演示如何在几秒钟内在 Workspace 中开始编写 SQL。

本教程假设您曾经使用过 SQL。如果没有,请先阅读我们的SQL 初学者教程,然后使用本文所示方法在 Workspace 中尝试该教程中的示例!

快速上手

要使用 Workspace,您需要先注册 DataCamp。(免费账户即可开始使用。)

创建账户后,使用顶部导航栏进入 Workspace。

DataCamp Workspace 菜单

本教程将使用内置的 NBA 投篮数据集。如果您更愿意使用自己的数据集,请跳至下文相关章节。

使用左侧导航进入 Datasets 页面。

DataCamp Workspace 菜单

在搜索框中输入 "nba",然后点击该数据集。

NBA 数据集搜索

您会看到数据集预览。阅读后,点击“Use Dataset”。 

NBA 数据集概览

上传您自己的数据集

您可以在 Workspace 中使用 SQL 分析任何表格型数据。目前对 CSV 文件的支持最佳,因此出于学习目的,如果您提供自己的数据集,建议使用 CSV 文件。

在 Overview 页面,点击“Empty”以创建一个空白 workspace。

创建新 workspace

为您的 workspace 命名,然后点击“Create Workspace.”

为 workspace 命名

在左侧工具栏中,打开 Files 工具。

Files 工具

在工具左上角,将数据文件拖入文件窗格以上传。(您也可以点击“browse files”或点击 ⊕ 按钮后选择 Upload)。

在 CSV 文件数据上使用 SQL

NBA 投篮数据位于 nba_players_shooting.csv 文件中。在左侧工具栏中打开 Files 工具即可查看该文件。

Files 工具 NBA 数据集

workspace 中的笔记本包含一些用于导入数据集的 Python 代码。但本例中我们希望使用 SQL。

在笔记本末尾,点击“Add SQL”。

添加 SQL

在“Select source”下拉菜单中,选择“DataFrames and CSVs”。

选择数据源

要针对 CSV 文件编写 SQL 查询,仅需对标准 SQL 做一个更改:在 FROM 子句中,不是写表名,而是用单引号写入 CSV 文件路径。

下面我们计算每位投手的命中率,并按由高到低排序。在 SQL 单元格中输入以下代码。

SELECT 
	shooter,
	SUM((SCORE = 'MADE')::DOUBLE) / COUNT(*) AS prop_score_made
	FROM 'nba_players_shooting.csv'
	GROUP BY shooter
	ORDER BY prop_score_made DESC

命中次数查询输出

请注意,当您处理 CSV 文件时所用的 SQL 方言是 DuckDB。您可以在DuckDB 让 SQL 成为 DataCamp Workspace 的一等公民中了解更多。

继续在 Python、R 或零代码图表中工作

在上一个示例中,我们保留了查询返回格式的默认设置。仔细查看 SQL 单元格顶部,您会看到返回值显示为名为 df 的 DataFrame。这意味着您可以在 Python(或 R workspace 中使用 R)中继续处理结果,或绘制零代码图表。

添加图表

点击“Add Chart”以添加零代码图表。

添加图表

按以下选项进行设置。

  • 类型:Bar
  • X 轴:prop_score_made
  • Y 轴:SHOOTER

图表自定义

在数据框上的数据使用 SQL

对 CSV 文件运行的 SQL 查询创建了一个名为 df 的数据框。您也可以针对这些 pandas 或 R 数据框编写 SQL 查询。与标准 SQL 唯一的区别在于:在 FROM 子句中,提供的是数据框名称而不是表名。

这里我们将复用 df 中的前序结果,并将 shooter 列拆分为名字和姓氏。添加一个 SQL 单元格,选择“DataFrames and CSVs”作为来源,并使用以下代码。

SELECT 
str_split(shooter, ' ')[1] AS first_name,
str_split(shooter, ' ')[2] AS last_name,
prop_score_made
FROM df

使用示例数据库

Workspace 还提供了多个示例数据库,供您练习 SQL 技能。

添加一个 SQL 单元格,在来源下拉菜单中滚动到“Sample Integrations”部分。本例我们使用“Bicycle Sales”。

示例集成

此时会出现一个默认查询。为便于讲解,我们将其替换为更简单的查询。

SELECT  
product_name, 
MIN(list_price) AS cheapest_list_price
FROM products
GROUP BY product_name

当您使用与数据库的连接(而不是针对 CSV 文件或数据框编写 SQL)时,可以选择将结果返回为查询。在下拉菜单中选择“Query”。您也可以为结果命名。这里将“query”改为“best_price”。

重命名查询

运行查询会得到如下输出。

查询输出

您现在可以基于该结果继续编写 SQL。实质上,您无需使用公用表表达式语法,就写出了一个公用表表达式(相关内容见数据科学家的 SQL 命令教程)。

再添加一个 SQL 单元格,并编写如下进一步查询。

SELECT *
	FROM best_price
	WHERE cheapest_list_price > 10000

运行该查询会返回以下结果。

查询输出 2

连接到其他数据库

Workspace 还支持连接多种数据库类型,包括 PostgreSQL、MySQL、Redshift、bigQuery、Athena、SQL Server、MariaDB 和 Oracle Database。有关如何连接的完整说明见Workspace 文档。

在左侧工具栏中,点击“Integrations”,然后点击 ⊕ 按钮创建新集成。

选择您要连接的数据库类型。

连接外部数据库

系统会要求您提供连接详情(具体项因数据库类型而异)。

数据库连接控制台

使用 AI 助手

虽然自己写 SQL 既有趣又实用,但让 AI 替您生成也能帮助学习并提升效率。您可以在从数据到洞见:借助 DataCamp Workspace AI 助手更快达成一文中了解 AI 助手。

添加一个 SQL 单元格。在右侧上下文菜单中点击“Generate”。

生成功能

SQL 单元格顶部会出现一个文本框。在其中为 AI 写下任务。您可以自定任务,或尝试下面的内容。

Return the product names and list prices for all mountain bikes made by Trek that are in stock.

输入任务后,按 Enter 让 AI 生成 SQL 代码。

AI 建议的查询

如果您认为代码合理,点击“Accept & run”(或先点击“Accept”,稍后再点击“Run”)以查看查询结果。

查询输出

让 AI 解释您的错误

您还可以使用 Workspace 内置 AI 解释 SQL 中出现错误的原因。假设您在为高价自行车编写查询时混淆了语法,用了 Fortran 风格的 .GT. 而不是 `>`。

SELECT *
    FROM best_price
    WHERE cheapest_list_price .GT. 10000

这会导致错误。在 SQL 单元格左下角,点击“Fix Error”。

查询中的错误

AI 会提供正确的代码,并解释您的错误之处。

建议的查询

总结

您已经了解了如何通过针对 CSV 文件和数据框编写 SQL 查询来避免搭建数据库。您还使用示例数据库练习了编写代码,并了解了如何用自然语言让 AI 生成 SQL 并修复错误。

这些功能让您更容易上手编写 SQL,并在学习与工作中更高效。

更进一步

通过登录或注册 DataCamp 账户,在 Workspace 中开始使用 SQL。您也可以在我们的技能路径中掌握部分SQL 基础,获得与数据交互和查询所需的全部技能。

Richie Cotton

作者

Richie Cotton

Richie 帮助个人与组织更好地运用数据与人工智能。他在“数据科学”这一称谓流行之前就从事相关工作,并在该领域撰写了两本书,创作了多门 DataCamp 课程。他主持 DataFramed 播客,并负责 DataCamp 的网络研讨会项目。

与 AI 版 Richie 对话,畅聊每一期 DataFramed——欢迎所有数据高手加入!

主题