Skip to content

Latest commit

 

History

History
430 lines (274 loc) · 32.9 KB

File metadata and controls

430 lines (274 loc) · 32.9 KB

十二、在实验和数据分析问题中使用 Python

在本章中,我们将了解 Python 如何使用专门为数据分析和数据科学创建的算法和库来帮助我们理解和分析数据。我们将首先研究实验数据,然后讨论使用两个主要库的算法:NumPypandas

在本章中,我们将介绍以下主题:

  • 定义实验数据
  • 在 Python 中使用数据库
  • 用 Python 理解数据分析
  • 使用其他库进行打印和分析

本章结束时,您将能够定义实验类型、数据收集以及计算思维在设计模型和解决方案时的帮助。您还将学习如何使用数据库,特别是NumPypandasMatplotlib来帮助分析和显示数据。最后,您将能够设计有助于数据分析的算法,以便从现有数据中学习。

技术要求

为了运行本章中的代码,您需要安装最新版本的 Python。

您还需要安装一些库,包括NumPypandasMatplotlibSeaborn

您可以选择使用集成的环境来运行 Python,例如Anaconda,它可以简化库依赖关系,并有助于在笔记本中组织算法。

本章中使用的源代码可以在 GitHub 存储库中找到:https://github.com/PacktPublishing/Applied-Computational-Thinking-with-Python/tree/master/Chapter12

定义实验数据

我们终于来到了本书的数据章节。我们都有自己的偏见和我们喜欢居住的地方。这是我的一个。数据如此重要的原因有很多,但让我们从这一事实开始,即数据、我们如何收集数据、我们如何分析数据以及我们如何呈现数据对我们的日常生活有着巨大的影响。

在编写显示信息的算法时,我们有责任以尽可能少的偏颇方式共享数据,确保我们的数据具有包容性,并代表我们的社区和人民。我想确保在我们深入讨论这个话题之前,我已经说过了。对我来说,这就是我爱上代码和 Python 的原因。

在本节中,我们将回顾实验数据,定义它是什么,以及处理实验数据时使用的关键术语。

现在,让我们开始吧。实验数据是一个来源于科学和工程的术语。然而,我们也使用其他领域的实验数据,如教育、公民等。实验数据包括方法、我们如何测量数据、我们正在进行的实验的设计,以及我们如何展示从这些设计中收集和分析的数据。就本章而言,我们不是在设计实验。我们将重点关注如何使用 Python 分析现有数据。但重要的是要注意,如果我们在实验中有发言权,我们需要确保我们的设计是公平的。

如果实验设计和数据收集方法是合理的,那么我们使用和分析的数据将比我们从有偏见的实验开始更有帮助。虽然我们永远无法完全消除偏见,但作为研究人员和开发人员,我们有责任以尽可能少的偏见呈现数据。*为什么这很重要?*根据实验提供的数据、图表和信息,思考所有政策变化。例如,如果实验一开始就有偏见,结果将导致政策可能无法充分涵盖社区的需求。

在处理数据时,我们总是使用计算思维元素。当我们解决问题时,我们必须定义问题是什么,我们想要研究什么,我们想要如何测量它,我们如何能够创建和概括模式,以及我们需要使用什么算法来产生数据的最佳表示。我们在数据分析中所做的一切都得益于我们使用计算思维元素。

数据科学是中的生长领域。2017 年,它被评为美国增长最快的领域。美国劳工统计局表示,预计到 2026 年,数据科学和统计领域将新增 1150 万个工作岗位。目前,有比合格候选人更多的职位可供选择。

现在,让我们看看 Python 如何处理数据。

在实验数据中,我们希望使用独立、相依和控制变量收集信息:

  • 自变量是被研究者改变或控制的变量。
  • 因变量是研究者正在被测量或测试的变量;因变量依赖于自变量。
  • 控制变量是实验中必须保持不变的变量或因素。

让我们看一个实验中这些变量的简单例子。一个常见的例子涉及植物生长的研究。自变量可以是一个或多个变量。例如,我们的自变量将是我们添加到植物中的肥料量。植物生长将是一个因变量。控件不会得到任何肥料,只能得到水。所以,在我们的实验中,假设我们有五种植物,我们将进行测量。一株植物只能得到水。那是我们的控制。另外四种作物将添加不同水平的肥料。这些是我们的实验工厂。生长取决于施肥量。

当我们设计实验时,我们希望有三件事是真实的:它们是可靠的,有效的,并且可以推广。以下是这些东西的含义:

  • 可靠与测量的一致性有关。这意味着,如果我们模拟条件,我们的结果应该可靠地相似。
  • 有效关系到实验是否测量了它想要测量的东西。
  • 可概括与结果相关,该结果可以概括并应用于其他设置。

关于实验,我们可以进行更多的细节和深度的研究,但我们只是在掌握了本章的数据后再看发生了什么。当我们参与实验设计时,理解这些基本术语是很重要的。作为开发人员,根据我们的角色,情况可能是这样。例如,在初创企业中,每个人都可能参与产品开发的各个方面。因此,在这些情况下,我们可以进行实验以及后续的分析算法。

现在,让我们继续讨论数据分析的功能,以及 Python 库如何帮助我们在分析实验结果时实现所需的功能。

在 Python 中使用数据库

在本节中,我们将了解一些可以与 Python 编程语言一起使用的库和包。我们指的是,有时会交替使用这两个术语,但为了清楚起见,包包含模块,而库是包的集合。

我们使用 Python 库就像我们使用内置模块一样,比如我们在第 4 章理解逻辑推理中首次使用的math模块。在我们的源代码中,在创建算法之前,我们使用import math导入了math模块。在第 4 章理解逻辑推理应用归纳推理部分下的示例中,我们使用了模块的math.floor()函数,允许我们向下舍入一个数字,而不管小数点是什么。当我们在 Python 中导入模块或库时,我们正在利用额外的函数和功能,这些函数和功能使我们能够进一步使用编程语言。

*那么,什么是图书馆?*在 Python 中,指的是可以重用的代码块。库包含一组模块。Python 有很多可用的库,和 Python 本身一样,大量库是开源的,这意味着任何人都可以下载和使用它们。因为我们将在本章中处理数据,所以现在我们将继续使用 pandas、NumPy 和 Matplotlib。但是,还有许多其他库和许多类型的库。以为例,有图形用户界面GUI框架,如KivytkinterPyQtPySimpleGUI等框架。对于游戏,还有其他库,如PygamePyglet。在机器学习中,TensorFlow库是GoogleBrain团队合作开发的一款流行的工具。但这些只是可用图书馆和使用它们的区域的一些例子。

安装库

尽管math模块内置于 Python 语言中,但需要安装库。在Python 3.9中,我们用来安装库的程序是pip****安装程序。这是内置于 Python 中的命令,从命令提示符窗口运行。我在这里要提到的一个警告是,权限和我们在哪里安装 Python 很重要,因此,如果您的计算机属于您的雇主,请确保根据需要调整 Python 程序路径,以便您可以访问所有模块和安装库。权限可能会有所不同。

在我的情况下,虽然我的主计算机不属于我,但我有管理员权限访问它,因此我可以作为管理员运行命令提示符并从那里运行pip

下面的屏幕截图显示了sympyPython 库的安装。如您所见,使用pip install sympy命令将库安装到我们的系统上。请注意,sympy是一个可用于 Python 的符号数学库。由于我已经安装了我们将要使用的其他库,因此我必须显示尚未在我的计算机上安装的软件包的安装情况:

Figure 12.1 – Installing a Python library

图 12.1–安装 Python 库

例如,如果您正在尝试安装已经安装的库,如果我再次尝试安装 pandas,您将收到一条要求已满足的消息,如下面的屏幕截图所示。请注意,用户信息将由您的用户填写,而不是如屏幕截图所示的变黑,这也显示了在您的系统上可以找到库包的位置:

Figure 12.2 – Requirement already satisfied message

图 12.2–已满足要求的信息

您可能还希望使用 Anaconda,它是 Python 和 R 编程语言的开源发行版。安装 Anaconda 后,您可以使用CMD.exe提示窗口使用conda installpip install安装库。Anaconda navigator 中包含的 Jupyter 笔记本可以运行和保存 Python 程序。

Anaconda 发行版程序中包含了更多的程序和包,它们可以简化我们与 Python 编程语言的交互方式。如果你正在做大量的编码,这是一个很好的资源。

如果您还没有这样做,在我们开始使用 NumPy、pandas 和 Matplotlib 库分析和显示数据以及创建模型之前,现在是安装它们的好时机。

使用 NumPy 和熊猫

NumPy与 Python 中的许多库以及 Python 编程语言本身一样,是一个开源库。NumPy 用于多维数组和矩阵数据结构。Python 本身没有数组;它有列表。因此,库可以用来为我们的算法提供这种能力。当我们有多个相同类型的元素时,我们可以使用一个数据结构来保存它们–即一个数组

pandas库用于分析数据,构建在numpy包上。熊猫图书馆和 NumPy 图书馆经常一起使用。当我们需要图形模型时,我们会添加第三个库 Matplotlib 或其他类似的库。在本章中,我们将继续使用 Matplotlib。

当我们导入库时,我们可以将它们作为全名导入,在本例中为便于使用,我们也可以缩短它们。如果要导入库,可以使用import numpy。假设我们想创建一个从011的数字数组。我们可以使用numpyarangereshape功能结合起来进行组织。让我们看一下代码片段:

ch12_ 缩写为.py

import numpy as np
myArray = np.arange(0, 12).reshape(2, 6)
print(myArray)

请注意,我们导入了numpy as np,而不仅仅是numpy。这意味着我现在可以使用np调用 NumPy 函数,而不必每次都键入numpy

提示:

请注意,np是 NumPy 的标准缩写,因此您可能会经常看到它。您可以将 NumPy 作为任何名称导入,但np是标准约定。

在前面的片段中,我们要求算法将011之间的数字列表拆分为2行,每行包含6元素。然后,我们打印数组以查看结果。请看一下输出:

[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]

如您所见,我们从0开始,这是我们在012范围内的下限。我们现在有两行,每行有六个数字。我们不包括 12。如果我们试着从013,我们将无法重塑数组,因为我们无法平均分割 13 个数字。我们可能会收到以下回溯错误(最近一次调用为 last):

  File "C:/Users/… /ch12_abbreviate.py", line 3, in <module>
    myArray = np.arange(0, 13).reshape(2, 6)
ValueError: cannot reshape array of size 13 into shape (2,6)

回想一下,在您看到省略号(的地方,您的信息会有所不同。它将根据 Python 的设置方式显示您的文件位置或路径。例如,您的文件位置可能类似于C:/Users/JohnSmith/Documents/ch12_abbreviate.py。这将替换前面代码中的文件位置。

正如您从ValueError消息中所看到的,我们无法将数组重塑为(2, 6)形状,因为我们还剩下一个数字。

现在,让我们来看看熊猫。我们使用DataFrames以便我们可以在行和列中操作数据。让我们来看一个例子:

ch12pddataframe.py

import pandas as pd
myAddressBook = {'names': ['Susan', 'Malena', 'Isabel',    
                           'Juan', 'Mike'],
                 'phoneNumbers':['333-333-3333', 
                                 '444-444-4444', 
                                 '555-555-5555',
                                 '777-777-7777', 
                                 '888-888-8888']}
addressBook = pd.DataFrame(myAddressBook)
print(addressBook)

请注意,我们创建了一个字典,其中包含联系人姓名和号码的值对。这样做之后,我们将通讯簿保存为DataFrame,它将以表格形式组织我们的信息。最后,我们打印了我们的通讯录。请看一下输出:

    names  phoneNumbers
0   Susan  333-333-3333
1  Malena  444-444-4444
2  Isabel  555-555-5555
3    Juan  777-777-7777
4    Mike  888-888-8888

请注意,pandas 使用字典中的信息为我们的列创建标签。我们没有为它提供标记行的信息,因此 Python 和 pandas 会自动使用数字04。该算法生成了一个表,其中提供了地址簿中的姓名和号码。

如您所见,pandas 和 NumPy 只是向 Python 添加了更多功能。在继续讨论 Matplotlib 之前,请注意,我们还没有真正看到实际的数据分析。我们很快就会谈到的。现在,我们知道如何使用我们的库,我们可以使用它们来组织和分析数据。让我们快速讨论 Matplotlib,然后继续讨论一个示例,在这个示例中,我们可以使用数据文件进行一些分析。

使用 Matplotlib

正如我们在上一节中提到的,pandas 和 NumPy 没有为我们的数据提供可视化表示或可视化模型。为了从数据中创建图形,我们可以使用 Python 中的 Matplotlib 库。就像我们分别将 pandas 和 NumPy 库作为pdnp导入一样,我们也可以缩短 Matplotlib。完整的库包含多个模块。我们将经常使用pyplot模块。Matplotlib.pyplot最常用的缩写是plt。如果我们调用 Matplotlib,我们通常将其缩写为mlt。让我们来看看一个快速样本:

ch12_matplotlib.py

import matplotlib.pyplot as plt
plt.plot([0, 3, 6], [4, 5, 6])
plt.show()

请注意,这个特定的库的名称甚至比matplotlib还要长。要导入库,我们必须使用matplotlib.pyplot导入它。想象一下,每当我们需要它的时候,我们都要把它写进一个算法中。不,谢谢!我们将其作为plt导入。

现在,让我们看一下代码片段中的第二行。我们正在创建一个绘图,将第一个列表中的每个数字与第二个列表中的数字进行匹配。我们有三个坐标对:(0, 4)(3, 5)(6, 6)。使用此代码时的输出不仅仅是一行输出;这是一个阴谋。现在,该算法在前面代码段的第二行中创建该绘图。

但除非你告诉它这是你想要的,否则它不会给你看。将show()函数想象为 Python 中的print()函数。除非我们告诉算法我们想看到什么,否则算法将在后台执行任务,但不会向我们显示。下图显示了此算法的输出:

Figure 12.3 – Matplotlib sample graph

图 12.3–Matplotlib 示例图

现在,正如你所看到的,图本身已经很有用了。我们可以看到,这是由这些点定义的线性关系。但请注意,屏幕底部为您提供了一些选项。左下角的主图标将随时将图形重置为其原始窗口。下面的屏幕截图中显示的缩放功能允许我们选择一段我们想更仔细查看的图形:

Figure 12.4 – Zoom feature of Matplotlib

图 12.4–Matplotlib 的缩放功能

请注意,左边的图表显示了我们对要仔细查看的图表片段的选择。然后,右边的图表只显示了我们选择的值。Matplotlib 还允许我们配置子地块,并使用箭头在多个表示之间来回导航。例如,如果在缩放后单击图形上的左箭头,它将使我返回到以前的表示。点击主页按钮,我将返回到原始图形。

当然,这不是 Matplotlib 允许的唯一图形或表示形式。这只是对视觉表现的一个小小的一瞥。

提示:

此处提供了可用绘图类型的其他资源:https://matplotlib.org/3.3.2/tutorials/introductory/sample_plots.html

在本节中,我们了解了 Matplotlib 库。我们学习了如何创建一个简单的绘图,以及在创建图形时如何从输出放大图形的各个部分。

既然我们知道如何访问我们的库,以及每个人能为我们做什么,让我们看看我们如何使用它们来分析数据。

用 Python 理解数据分析

在上一节中,我们介绍了一些我们可以用来在 Python 中分析数据的库。在本节中,我们将查看一个示例和多个代码片段,以使用真实数据和 Matplotlib 构建条形图,但在此之前,让我们回顾一下为什么 Python 在数据分析方面如此重要。

由于 Python 是面向对象的,它允许我们简化真正复杂和/或大型的数据集。这使得数据具有很好的可读性,并且使用库可以生成数据表示,例如表格和可视化模型,从而允许我们预测数据的去向,创建回归分析,等等。如本章导言所述,数据分析对决策也至关重要。一个精心设计的实验产生的数据是我们可以依赖的,是可以概括的。数据分析可以成为我们社会更加平等和公平的工具。

话虽如此,我们将更多地关注我们可以用 Python 做什么的机械方面,而不是我们如何解释它,以便我们能够理解 Python 如何使用我们的库进行数据分析和显示结果。也就是说,我们将在第 15 章应用 C 计算思维问题第 16 章高级应用计算思维问题中使用更多示例,在各个领域,我们不仅将使用其中一些工具,而且还将为我们提供一个机会,探索在这些样本的背景下,数据分析意味着什么。

现在我们来看一个例子,它可以帮助我们进一步了解这些工具的功能,以及我们如何编写算法来解决所提出的一些问题。

在开始之前,我们将使用一个数据文件ch12_data.csv,它可以在 GitHub 存储库中找到。该文件包含 1996 年至 2012 年间,按种族/民族、完成时间、性别、机构控制和接受申请的百分比划分的学位申请学生的毕业率。数据从国家教育统计中心下载,此处:https://nces.ed.gov/programs/digest/d19/tables/dt19_326.10.asp

我们存储库中的数据文件只包含所有四年制机构的数据,而不是整个文件。一些标题也被简化了。

当我们想要处理数据文件时,告诉 Python 它可以在哪里找到它,以便它知道在运行算法时使用什么,这一点很重要。为此,我们使用os模块,该模块允许我们的算法与我们的操作系统操作系统进行交互。请注意,我们的代码片段已经包含了其他库(稍后我们将使用它们):

ch12_csvAnalysis.py

import pandas as pd
import matplotlib as mlp
import matplotlib.pyplot as plt
import os
#Let Python know correct directory for file.
os.chdir('C:\\Users\\...\\Program Files\\Chapter 12')
print('Current directory', os.getcwd())

正如我们前面所做的,请确保将用户信息中的省略号替换为您自己的位置。在存储库中提供的算法中,您还需要调整该位置以运行该算法,因为该算法的位置将用于我自己的路径。

现在我们已经告诉 Python 在哪里可以找到文件,我们可以在算法中使用它。如果我们运行此算法,我们将看到输出应该与我们在以os.chdir开头的行中指出的路径匹配:

Current directory C:\Users\...\Program Files\Chapter 12

请再次注意,我们的路径将不匹配。这一切都取决于文件保存的位置。

下图显示了与我们的.csv文件相同的.xls格式的数据和文件,因为更容易指出我们需要从中得到什么。请注意,我们将使用.csv文件进行分析:

Figure 12.5 – Data to be used in Python formatted as an .xls file

图 12.5–Python 中使用的格式化为.xls 文件的数据

如果我们只想拉取显示的行,我们可以使用以下代码片段从我们的.csv文件中获取该信息:

ch12_csvAnalysis_2.py

import pandas as pd
graduates = pd.read_csv('ch12_data.csv', index_col = 0)
print(graduates[0: 16])

请注意,我们的算法导入了 pandas 库。read_csv()函数告诉 Python,我们将使用要开始使用的列的文件名和索引。该索引为我们提供了将用作行标题的值。如果索引不在第一列中,我们可以将其更改为其他值。然后,我们打印希望看到的行。由于我们的数据广泛,我们的输出如下所示:

Figure 12.6 – Output of ch12_csvAnalysis.py algorithm

图 12.6–ch12_csvAnalysis.py 算法的输出

注意我们只看到了前两列,然后我们看到了椭圆。这表明在第二列和第三列之间有更多的列。这并不意味着 Python 没有读取其余的信息,它只是对我们不可见。最后一个输出行[13 rows x 10 columns]实际上告诉我们我们提取的数据中有多少行和列。

假设我想查看一组数据,比如Hispanic,作为 1996 年至 2012 年间年条形图的比较。然后,我可以使用 Matplotlib 库中的条形图绘图。让我们来看看下面的算法所做的调整:

ch12\u csvAnalysis\u 3.py

import pandas as pd
import matplotlib as mlp
import matplotlib.pyplot as plt
import os
#Let Python know correct directory for file.
os.chdir('C:\\Users\\sofia.dejesus\\OneDrive - Hawken 
    School\\03_book\\Program Files\\Chapter 12')
graduates = pd.read_csv('ch12_data.csv', index_col = 0)
print(graduates[0:13])
fig, ax = plt.subplots()
ax.bar(graduates.index, graduates['Hispanic'])
ax.set_xticks(graduates.index)
ax.set_xticklabels(graduates.index, rotation = 60, 
    horizontalalignment = 'right')
ax.set_title('Number of Hispanic graduates from 1996-2012', 
    fontsize = 16)
ax.set_ylabel('Number of Graduates')
plt.show()

我们应该从前面的代码中仔细观察一些事情。我们做的第一件事是添加fig, ax = plt.subplots()行。这条线允许我们创建绘图,但也允许我们在一个图形中创建多个绘图(如果需要)。如果我们添加四个绘图,我们将使用fig, ax = plt.subplots(2, 2),这将告诉算法我们正在创建四个两行两列的绘图。如果我们像在前面的代码中那样将括号留空,那么我们只有一个子图。

接下来,我们将确定我们将创建的图形,它是一个条形图。我们只想比较这些年来西班牙裔人口的数字,所以我们在ax.bar(graduates.index, graduates['Hispanic'])行中确定了这一点。

这里我应该注意到,许多开发人员使用dataframe作为他们的变量。我更喜欢用描述性的方式来命名我的DataFrame,所以在算法中我没有叫我的DataFrame``df,而是叫它graduates。无论您的偏好是什么,这就是我们目前正在使用的DataFrame来创建可读的绘图。

注意代码中的记号和记号标签;我们首先确定从何处获取刻度数据以及标签是什么。然后,我们可以通过添加旋转(如果我们想倾斜标签)、对齐等来为绘图添加更多格式。我们也可以在这里更改字体大小。最后,在显示绘图之前,我们设置y轴标题和条形图标题。以下屏幕截图显示了此算法的绘图:

Figure 12.7 – Plot of Hispanic graduates for ch12_csvAnalysis_3.py

图 12.7–ch12_csvAnalysis_3.py 西班牙裔毕业生图

请注意,我们的图形有标签并清晰地显示数据,我们可以修改格式,使其清晰易读。在分析信息的同时,我们也注意到第一年与2000之间的差距,以及20002002之间的差距。这些年份的数据不包括在数据文件中。

这只是使用 Matplotlib 可能的绘图之一。我们将有机会在第 15 章应用计算思维问题第 16 章高级应用计算思维问题中进行更多的探索,这些问题只针对中的样本多个领域使用了我们在本书前面几章中讨论过的内容。现在,让我们继续讨论数据和 Python 库的其他应用程序。

使用附加库进行绘图和分析

在我们结束本章关于实验数据、库的使用以及绘制和分析数据之前,让我们再看三个有助于数据分析和绘制的库。这些不是分析和绘图的唯一库,也不是我们在本书其余部分中探索的唯一库:

  • Seaborn是一个用于数据可视化的库;建在 Matplotlib 的之上。
  • SciPy是一个用于线性代数、优化、统计和更多内容的库;建立在 NumPy 之上。
  • Scikit Learn是一个用于机器学习的库;SciPy 堆栈的第部分。

在接下来的章节中,我们将在解决一些需要使用这些库的应用程序问题时,深入讨论其中一些库的使用。现在,让我们快速查看这些库中的每一个在查看数据集时可以帮助我们的内容。

使用 Seaborn 图书馆

Seaborn 库在 Matplotlib 可视化功能的基础上为我们提供了更多功能。我们可以使用 Seaborn 库做很多事情,为了简化代码,我们通常将其作为sns导入。以下是该库的一些常见用途:

  • 相关性
  • 聚合统计(观察分类值)
  • 因变量的线性回归图
  • 使用多个绘图创建抽象和网格

Seaborn 最伟大的一点就是它对熊猫也很有效。当与数据帧相结合时,创建数据的统计表示和可视化很容易。

Seaborn 有一些样本数据集可以访问,也就是说,它们是内置的,如果我们知道数据集的名称的话。然后,我们可以用一行简单的代码调用内置数据集。让我们看看下面的代码片段和生成的图形:

ch12_seabornSample.py

# Import seaborn
import seaborn as sns
sns.set_style('darkgrid')
# Load an example dataset
exercise = sns.load_dataset("exercise")
#Create the plot
sns.relplot(
    data=exercise,
    x='id', y="pulse", col="time",
)

从前面的代码中,您可以看到我们已经为绘图设置了样式。我们正在向绘图中添加'darkgrid'样式,并在导入库后调用它。Seaborn 有几种内置样式:whitewhitegriddarkdarkgridticks。以下屏幕截图显示了 Seaborn 生成的绘图:

Figure 12.8 – Graph of exercise sample dataset with darkgrid style

图 12.8–具有 darkgrid 样式的练习样本数据集图表

从图中可以看出,我们可以分析脉冲和时间或任何其他变量之间是否存在相关性。

我们也可以使用配对图来显示变量之间是否存在相关性。让我们使用另一个内置数据集 flights 来查看成对打印的功能:

ch12_pairplotSNS.py

# Import seaborn
import seaborn as sns
sns.set_style('darkgrid')
# Load an example dataset
flights = sns.load_dataset("flights")
#Create the plot
sns.pairplot(
    data=flights,
)

前面的代码片段与练习数据的前一个代码片段非常相似。不同之处在于,我们在本例中调用了pairplot()函数。以下屏幕截图显示了我们生成的绘图网格:

Figure 12.9 – Pair plotting using Seaborn

图 12.9–使用 Seaborn 进行成对绘图

请注意,乘客数量和年份似乎正相关。也就是说,晚年的乘客比飞行初期的乘客多。在分析该数据集时,我们可能希望做出一个预测,比如说在现代会有更多的乘客乘坐飞机。

我们可以利用这些图表来帮助我们做出预测。这就是说,这些数据相当陈旧,因此我们需要更多更新的数据来做出准确的预测。我们掌握的数据越多越好。对于大量的数据,我们也可以使用机器学习,我们将在第 13 章使用分类和聚类第 14 章计算思维和统计分析中的 Python 中简要探讨,这样我们就可以学习如何操作和从数据中学习。

在我们转到另一个库之前,关于 pairplot 的另一件事是,如果有 10 列数据,pairplot 会将每一列与自身进行比较,然后再比较其他可用列,从而创建一个包含所有比较变量的相当大的显示。我们将在第 14 章计算思维和统计分析中的 Python中看到更多的配对图。在第 15 章应用计算思维问题第 16 章高级应用计算思维问题中也存在问题,这将使我们能够更多地练习这些图表,以及我们能从中得到什么。

Seaborn 库有助于可视化统计数据,就像 Matplotlib 一样。Seaborn 中一些内置函数的易用性使其成为可视化和分析的绝佳工具。

现在,让我们看看 SciPy 库。

使用 SciPy 库

SciPy 库主要用于解决科学和数学问题。一些有用的子包及其用途如下:

  • cluster用于聚类算法。
  • constants包含物理和数学常数和单位,如golden(黄金比例)和mu_0(磁常数)。
  • fftpack采用快速傅立叶变换程序。
  • integrate用于微分方程解算器。
  • interpolate包含插值和平滑样条线。
  • io与输入和输出相关。
  • linalg与线性代数有关。
  • ndimage用于处理N维图像。
  • odr用于正交距离回归。
  • optimize用于优化和根查找例程。
  • signal用于信号处理。
  • sparse用于稀疏矩阵和相关例程。
  • spatial用于空间数据结构和算法。
  • special用于特殊函数(如椭圆函数和积分)。
  • stats用于统计分布和函数。

在每个子包中,SciPy 包含许多功能,以帮助科学数据的可视化和优化。因为它是专门为这个目的而创建的,所以它是科学领域中常用的工具。也就是说,统计软件包也很强大,因此即使在非科学统计分析中,该库也很有用。

现在让我们看看 Scikit 学习库,我们将在本书的以下章节中使用它。

使用 Scikit 学习库

Scikit Learn 可能是 Python 中最重要的机器学习库。我们将在下面的章节中的示例中探索这个库,因为我们将探索一些适合机器学习的问题,所以我们不会在这里深入讨论这些功能。也就是说,以下是 Scikit Learn 为我们提供的一些功能:

  • 聚类有助于对未标记的数据进行分组。
  • 回归测量变量(变量的平均值)与其他变量值之间的关系。
  • 分类在 Scikit Learn 中有多个分类器,类似于回归。一些分类器是线性判别分析装袋分类器K-最近邻分类器等等。
  • 模型选择有用于创建机器学习中的训练和测试模型的工具。
  • 预处理包含标准化数据集的工具(更多关于数据预处理的详细信息,请参见第 14 章计算思维和统计分析中的 Python】

第 14 章计算思维和统计分析中的 Python第 15 章应用计算思维问题的后续示例中,我们将非常熟悉 Scikit 学习库,以及第 16 章高级应用计算思维问题,因此我们将为这些章节留下一些讨论。

Python 中提供的库和包允许我们对数据集执行详细的分析,并创建大量有用的绘图,以帮助数据分析。

总结

在这一章中,我们回顾了实验数据的定义以及实验背景下的有效性、可靠性和可推广性。我们还讨论了如何安装和使用 pandas、NumPy 和 Matplotlib 库,以便使用它们来组织和显示数据。您学习的一些技能包括定义实验、数据收集,以及计算思维如何帮助我们定义问题和设计用于显示结果的内容。

此外,我们还了解了数据分析和数据科学及其在当今世界的发展和重要性。我们能够使用这些库生成一个绘图,该绘图使用 Matplotlib 条形图表示数据文件的子集。

在下一章中,我们将学习更多关于数据以及数据科学和数据分析的其他应用。