前 言
关于本书
现代企业每天都在运营,并快速生成大量数据。隐藏在这些数据中的是关键模式和行为,它们可以帮助企业从根本上深入了解自己的客户。作为一名数据分析师,最令人兴奋的莫过于像淘金一样,从海量数据分析中获取有用的见解。
本书由一个专业数据科学家团队撰写,该团队曾经利用自己的数据分析技能为各种形式和规模的企业提供服务,因此拥有非常丰富的实践经验。本书是读者开始学习数据分析的入门宝典,它向读者展示了如何有效地筛选和处理来自原始数据的信息。即使你是一个没有任何经验的新人,也可以从本书的学习中获益良多。
本书首先向读者展示了如何形成假设并生成描述性统计数据,这些统计数据可以为读者现有的数据提供关键见解。跟随本书,读者将学习如何编写SQL查询来聚合、计算和组合来自当前数据集之外的SQL数据。读者还将了解如何使用不同的数据类型,如JSON。通过探索高级技术,如地理空间分析和文本分析,读者最终将能够更深入地了解自己的业务。最后,本书还能让读者了解如何使用分析和自动化等高级技术以更快、更有效地获取信息。
通读完本书,读者将获得识别数据中的模式和提取见解所需的技能。读者将能够以专业数据分析师的眼光来查看和评估数据。
本书读者
如果读者是一名正在寻求过渡到分析业务的数据库工程师,或者是具有SQL基础知识但不知道如何通过它来挖掘数据见解的人,那么本书正适合你。
内容介绍
第1章“SQL数据分析导论”,介绍了有关数据分析和SQL的基础知识。读者将学习如何使用数学和图形技术,通过Excel分析数据。此外,读者还将了解到SQL在数据世界中的作用,以及如何使用基础SQL来操作关系数据库中的数据。
第2章“SQL和数据准备”,详细展示了如何使用SQL技术清洗和准备数据以进行分析。首先读者将学习如何将多个表和查询组合成一个数据集,然后学习更高级的内容。
第3章“聚合和窗口函数”,介绍了SQL的聚合函数和窗口函数,它们是汇总数据的强大技术。读者将能够应用这些函数来获得对数据的新见解并了解数据集的属性,如数据 质量。
第4章“导入和导出数据”,为读者提供了利用其他软件工具(如Excel、R和Python)与数据库交互的必要技能。
第5章“使用复合数据类型进行分析”,让读者深入了解SQL中可用的各种数据类型,并演示如何从日期时间数据、地理空间数据、数组、JSON和文本中提取见解。
第6章“高性能SQL”,详细介绍了如何优化查询,使它们运行得更快。除如何分析查询性能之外,读者还将学习到如何使用其他SQL功能(如函数和触发器),以扩展其默认功能。
第7章“科学方法和应用问题求解”,将强化读者已经获得的技能,以帮助读者解决除本书描述的问题外的其他实际问题。使用科学方法和批判性思维,读者将能够分析数据并将其转换为可操作的任务和信息。
本书约定
本书中使用了许多文本约定。
(1)有关代码块的设置如下:
SELECT *
FROM products
WHERE production_end_date IS NULL;
(2)要突出代码块时,相关内容将加粗显示:
(
SELECT
street_address, city, state, postal_code
FROM
customers
WHERE
street_address IS NOT NULL
)
UNION
(
SELECT
street_address, city, state, postal_code
FROM
dealerships
WHERE
street_address IS NOT NULL
)
ORDER BY
1;
(3)术语或重要单词采用中英文对照形式,在括号内保留其英文原文。示例如下:
异常值(outlier)也称为离群值,是与数据的其余值明显不同且很少出现的数据点。异常值通常可以使用图形技术(如散点图和箱形图)找出来,因为它与其余数据相距甚远,非常容易识别。
(4)对于界面词汇或专有名词,将保留英文原文,在括号内添加其中文译名。示例如下:
接下来还需要在R中安装RPostgreSQL包。可以在RStudio中通过导航到Packages(包)选项卡并单击Install(安装)图标来执行此操作。
设置环境
在进入本书的具体学习之前,需要先设置一下特定的软件和工具。请按下文介绍的详细步骤操作。
安装PostgreSQL 12
要在Windows、Linux和MacOS上安装和设置PostgreSQL 12,请按下述步骤操作。
在Windows系统上下载和安装PostgreSQL
在Windows上下载并安装PostgreSQL的具体操作如下。
(1)打开Web浏览器,导航到以下网址:
https://www.postgresql.org/download/
从Package and Installers(包和安装程序)列表中选择Windows,如图P1所示。
图P1 PostgreSQL下载页面
(2)单击Download the installer(下载安装程序),如图P2所示。
图P2 PostgreSQL Interactive安装程序下载
(3)选择Version(版本)为12.x,因为这是本书使用的版本,如图P3所示。
图P3 PostgreSQL下载页面
(4)大部分安装步骤只需要单击Next(下一步)按钮即可。期间你将被要求指定一个数据目录。建议指定一个可轻松记住的路径,如图P4所示。
图P4 PostgreSQL安装—Windows路径
(5)为postgres超级用户指定密码,如图P5所示。
图P5 设置超级用户密码
(6)不要更改默认指定的Port(端口)号,除非它与系统上已安装的应用程序冲突,如图P6所示。
图P6 PostgreSQL端口设置
(7)单击Next(下一步)按钮继续执行其余步骤并等待安装完成。
设置PATH变量
要验证当前系统的PATH变量是否设置正确,请打开命令行,键入或粘贴以下命令,然后按Enter键执行:
psql -U postgres
如果你收到如图P7所示的错误,则需要将PostgreSQL bin目录添加到PATH变量。
图P7 错误—未设置路径变量
请按以下步骤操作以将PostgreSQL bin目录添加到PATH变量。
(1)右击Windows桌面上的“此电脑”图标,在快捷菜单中选择“属性”,打开“控制面板\系统和安全\系统”窗口,然后单击左侧列表中的“高级系统设置”,如图P8所示。
图P8 Windows高级系统设置
(2)在出现的“系统属性”对话框中,应该已经自动定位到“高级”选项卡,单击右下角的“环境变量”按钮,如图P9所示。
图P9 Windows系统属性
(3)单击“系统变量”中的Path,然后单击“编辑”按钮,如图P10所示。
图P10 设置PATH变量
(4)在出现的“编辑环境变量”对话框中,单击“新建”按钮,如图P11所示。
图P11 新建变量
(5)单击“浏览”按钮,定位到PostgreSQL的安装路径(默认为C:\Program Files\ PostgreSQL\12\),别忘记在末尾添加bin文件夹,如图P12所示。
图P12 输入路径
单击“确定”按钮并重新启动系统。
(6)重启完成后,现在打开命令行,在其中键入或粘贴以下命令,按Enter键执行:
psql -U postgres
输入你在前面“在Windows系统上下载和安装PostgreSQL”部分步骤(5)中设置的密码,然后按Enter键。此时你应该能够登录到PostgreSQL控制台,如图P13所示。
图P13 PostgreSQL Shell
(7)输入“\q”并按Enter键退出PostgreSQL Shell,如图P14所示。
图P14 退出PostgreSQL Shell
在Linux上安装PostgreSQL
以下步骤将帮助你在基于Ubuntu或Debian的Linux系统上安装PostgreSQL。
(1)打开终端。在新行上键入或粘贴以下命令,然后按Enter键:
sudo apt-get install postgresql-12
(2)安装后,PostgreSQL 将创建一个名为postgres的用户。你需要以该用户身份登录才能访问PostgreSQL Shell:
sudo su postgres
此时你看到的Shell提示如图P15所示。
图P15 在Linux上访问 PostgreSQL Shell
(3)键入以下命令将带你进入PostgreSQL Shell:
psql
你可以键入“\l”(这是一个反斜杠和一个小写字母l)来查看默认加载的所有数据库的列表,如图P16所示。
图P16 Linux上的数据库列表
?注意:
在此我们仅介绍了如何在基于Ubuntu和Debian的系统上安装PostgreSQL。有关在其他发行版上安装的说明,请参阅发行版的说明文档。
Linux的PostgreSQL下载页面如下:
https://www.postgresql.org/download/linux/
在MacOS上安装PostgreSQL
在MacOS上安装PostgreSQL之前,请确保你的系统上安装了Homebrew包管理器。如果尚未安装,请转到https://brew.sh/并将该网页上提供的脚本粘贴到MacOS终端(Terminal应用程序)中,然后按Enter键。按照出现的提示操作并等待脚本完成安装。
?注意:
以下说明是基于MacOS Catalina版本10.15.6编写的,这是本书撰写时的最新版本。有关使用Terminal的更多帮助,请访问以下链接:
https://support.apple.com/en-in/guide/terminal/apd5265185d-f365-44cb-8b09-
71a064a42125/mac
Homebrew包管理器安装页面如图P17所示。
图P17 安装Homebrew
安装Homebrew后,请按照以下步骤安装PostgreSQL。
(1)打开一个新的Terminal终端窗口。依次键入以下3个命令,然后按Enter键安装 PostgreSQL包:
brew doctor
brew update
brew install postgres
等待安装完成。根据你的本地设置和连接速度,你将看到类似于如图P18所示的消息(请注意,图P18仅显示了部分安装日志)。
图P18 安装进度(部分显示)—PostgreSQL
(2)安装完成后,可通过在终端中键入以下命令并按Enter键来启动PostgreSQL进程:
pg_ctl -D /usr/local/var/postgres start
此时你会看到类似于如图P19所示的输出。
图P19 启动PostgreSQL进程
(3)进程启动后,可使用名为postgres的默认超级用户登录PostgreSQL Shell,如下所示(按Enter键执行命令):
psql postgres
(4)你可以键入“\l”(这是一个反斜杠和一个小写字母l),然后按Enter键以查看默认加载的所有数据库的列表,如图P20所示。
图P20 默认加载的数据库列表
输入“\q”然后按Enter键退出PostgreSQL Shell。
?注意:
pgAdmin将与PostgreSQL 12一起自动安装。
安装Python
在Windows上安装Python
(1)访问以下官方网址,找到你想要的Python版本。
https://www.anaconda.com/distribution/#windows
(2)确保从下载页面选择Python 3.7。
(3)确保安装的版本匹配你的计算机系统架构(即32位或64位)。你可以在操作系统的“系统属性”窗口中找到此信息。
(4)下载安装程序后,只需双击文件并按照屏幕上的提示进行操作即可。
在Linux上安装Python
要在Linux上安装Python,请按以下步骤操作。
(1)打开命令提示符并运行:
python3 --version
这可以验证是否已安装Python 3。
(2)要安装Python 3,请运行以下命令:
sudo apt-get update
sudo apt-get install python3.7
(3)也可以通过以下网址下载Anaconda Linux安装程序并按照说明安装Python:
https://www.anaconda.com/distribution/#linux
在MacOS上安装Python
与Linux类似,你有多种在Mac上安装Python的方法。要在MacOS上安装Python,请执行以下操作。
(1)按CMD + 空格键打开Mac终端,在打开的搜索框中键入“terminal”,然后按Enter键进入命令行界面。
(2)通过命令行运行以下命令以安装Xcode:
xcode-select --install
(3)安装Python 3最简单的方法是使用Homebrew,通过命令行运行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/
install/master/install)"
(4)将Homebrew添加到你的$PATH环境变量中。
在命令行中运行以下命令以打开你的配置文件:
sudo nano ~/.profile
在底部插入以下命令:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
(5)最后一步是安装Python。在命令行中,运行以下命令:
brew install python
(6)同样,也可以通过以下网址提供的Anaconda安装程序安装Python。
https://www.anaconda.com/distribution/#macos
安装Git
在Windows或MacOS X上安装Git
可通过访问以下网页下载和安装适用于Windows/MacOS的Git:
https://git-scm.com/
当然,为了改善用户体验,建议通过GitKraken等高级客户端安装Git。其网址如下:
https://www.gitkraken.com/
在Linux上安装Git
Git可以通过以下命令行轻松安装:
sudo apt-get install git
如果你更喜欢图形用户界面,则GitKraken也可用于Linux。其网址如下:
https://www.gitkraken.com/
加载示例数据集
在Windows系统上加载示例数据集
本书中的大多数练习都使用示例数据库sqlda,其中包含一家名为ZoomZoom的虚构电动汽车公司伪造的数据。请执行以下步骤来设置它。
首先,创建一个名为sqlda的数据库。打开命令行并键入或粘贴以下命令,然后按Enter键执行:
createdb -U postgres sqlda
系统将提示你输入在安装过程中为postgres超级用户设置的密码,如图P21所示。
图P21 PostgreSQL Shell密码请求
要检查数据库是否已成功创建,可通过键入或粘贴以下命令并按Enter键登录到Shell:
psql -U postgres
出现提示时输入你的密码。按Enter键继续。
输入“\l”(这是一个反斜杠和一个小写字母l),然后按Enter键检查是否创建了数据库。此时sqlda数据库应与默认数据库列表一起出现,如图P22所示。
图P22 PostgreSQL数据库列表
访问以下链接,从本书GitHub存储库中的Datasets文件夹下载data.dump文件:
https://packt.live/30UhcfI
根据文件在系统上的位置,修改以下命令行中显示的<path>路径。在命令行中键入或粘贴命令,然后按Enter键执行:
psql -U postgres -d sqlda -f C:\<path>\data.dump
?注意:
或者,你也可以使用命令行导航到下载文件所在的本地文件夹(使用cd命令)。例如,如果已将data.dump文件下载到计算机的“下载”文件夹中,则可以使用以下命令导航到它:
cd C:\Users\<你的Windows用户名>\Downloads
在导航到下载文件所在的本地文件夹之后,即可删除上述步骤中显示的<path>前缀。该命令此时如下所示:
psql -U postgres -d sqlda -f data.dump
此时你可以得到类似于图P23的输出。
现在来检查一下该数据库是否加载正确。通过键入或粘贴以下命令登录到PostgreSQL 控制台,按Enter键执行:
psql –U postgres
在Shell中,键入以下命令以连接到sqlda数据库:
\c sqlda
然后键入“\dt”。此命令可以列出数据库中的所有表,如图P24所示。
?注意:
我们使用超级用户postgres导入数据库仅用于演示目的。在实际生产环境中,建议使用单独的账户。
图P23 PostgreSQL数据库导入
图P24 验证数据库是否已导入
在Linux系统上加载示例数据集
在Linux系统上加载的示例数据集和Windows系统上的一样,都是sqlda,可通过执行以下步骤来设置它。
(1)在终端输入以下命令切换到postgres用户,按Enter键执行:
sudo su postgres
此时你可以看到Shell更改如图P25所示。
图P25 在Linux上加载样本数据集
(2)键入或粘贴以下命令以创建一个名为sqlda的新数据库,按Enter键执行:
createdb sqlda
现在你可以键入“psql”命令进入PostgreSQL Shell,然后输入“\l”(即反斜杠后跟小写字母l)来检查数据库是否创建成功,如图P26所示。
图P26 在Linux上访问PostgreSQL Shell
输入“\q”,然后按Enter键退出PostgreSQL Shell。
(3)访问以下链接,从本书GitHub存储库中的Datasets文件夹下载data.dump 文件:
https://packt.live/30UhcfI
使用cd命令导航到下载文件所在的文件夹,然后键入以下命令:
psql -d sqlda data.dump
(4)然后等待示例数据集导入,如图P27所示。
(5)要测试数据集是否正确导入,先键入“psql”,然后按Enter键进入PostgreSQL Shell。在运行\c sqlda命令后再运行\dt命令以查看数据库中表的列表,如图P28所示。
?注意:
我们使用超级用户postgres导入数据库仅用于演示目的。在实际生产环境中,建议使用单独的账户。
图P27 在Linux上导入数据集
图P28 在Linux上验证导入
在MacOS系统上加载示例数据集
在MacOS系统上加载的示例数据集同样是sqlda,可通过执行以下步骤来设置它。
(1)通过在终端键入以下命令进入PostgreSQL Shell,按Enter键执行:
psql postgres
(2)现在可通过键入以下命令并按Enter键创建一个名为sqlda的新数据库(不要忽略末尾的分号):
create database sqlda;
(3)此时你可以看到以下输出。在终端键入“\l”(即反斜杠后跟小写字母l),然后按Enter键,以检查数据库是否已成功创建(你应该会看到列出的sqlda数据库),如 图P29所示。
图P29 检查新数据库是否创建成功
(4)在PostgreSQL Shell中键入或粘贴“\q”,然后按Enter键退出。
(5)访问以下链接,从本书GitHub存储库中的Datasets文件夹下载data.dump文件:
https://packt.live/30UhcfI
使用cd命令导航到下载文件所在的文件夹,然后键入以下命令:
psql sqlda < ~/Downloads/data.dump
?注意:
上述命令假定文件保存在Downloads目录中。请确保根据系统上data.dump文件的位置更改上述突出显示的路径。
然后,等待数据集被导入,如图P30所示。
图P30 导入数据集
(6)要测试数据集是否正确导入,请键入“psql”,然后按Enter键进入PostgreSQL Shell。运行\c sqlda命令后再运行\dt命令以查看数据库中表的列表,如图P31所示。
图P31 sqlda数据库中表的列表
运行SQL文件
可以从命令行使用以下命令,通过*.sql文件执行命令和语句:
psql -d your_database_name -U your_username < commands.sql
也可以通过SQL解释器执行:
database=#
要访问交互式解释器,请键入以下命令:
psql -d your_database_name -U your_username
安装库
Anaconda是一个环境容器,其中可配置各种不同版本的开发环境,这些开发环境互不干扰。pip是一个通用的Python包管理工具,如果在你的计算机上已经安装了Anaconda,则应该也已经预装了pip,这样就可以使用pip安装所有必需的库,例如:
pip install numpy
或者,你也可以使用以下命令安装所有必需的库:
pip install –r requirements.txt
如果你没有requirements.txt 文件,则可在以下网址找到它:
https://packt.live/330I2FI
本书的练习和活动将在Jupyter Notebook中执行。Jupyter是一个Python 库,可以像其他Python库一样安装,其命令如下:
pip install jupyter
但一般来说,它应该已经随Anaconda一起预装。要打开Jupyter Notebook,只需在终端或命令提示符中运行以下命令:
jupyter notebook
访问代码文件
可在以下网址找到本书的完整代码文件:
https://packt.live/2UCHVer
本书GitHub存储库网址如下:
https://github.com/PacktWorkshops/The-SQL-Workshop
本书中使用的高质量彩色图像可在以下网址找到:
https://packt.live/2HZVdLs
·IV·
SQL数据分析实战(第2版)
·V·
前 言