介绍 Jupyter 和 Pandas
本文是《使用 Python 和 Pandas 进行数据清理》系列文章的第一篇,旨在帮助在职开发人员快速掌握数据科学工具和技术。
系列概述
本文是系列文章的第一篇,旨在帮助在职开发人员快速掌握数据科学工具和技术。我们将从对本系列的简要介绍开始,并解释我们将涵盖的所有内容。
从事数据分析和机器学习 (ML) 项目的开发人员和数据科学家花费大部分时间来查找、清理和组织数据集。在本入门系列中,我们将介绍一些最常见的数据清理场景,包括:
- 可视化“混乱”数据
- 重塑数据集
- 替换缺失值
- 删除和修复不完整行
- 规范化数据类型
- 合并数据集
我们将使用 Python、Pandas 和 Seaborn 在 Jupyter Notebook 中来清理零售商店的客户数据库。这个包含七个部分的系列将处理第一轮混乱的数据,进行清理,并开发一组可视化图表来展示我们的工作。以下是本系列将涵盖的内容:
- 第一部分 - Jupyter 和 Pandas 入门
- 第二部分 - 将 CSV 和 SQL 数据加载到 Pandas 中
- 第三部分 - 在 Pandas 中更正缺失数据
- 第四部分 - 在 Pandas 中合并多个数据集
- 第五部分 - 在 Pandas DataFrame 中清理数据
- 第六部分 - 在 Pandas DataFrame 中重塑数据
- 第七部分 - 使用 Seaborn 和 Pandas 进行数据可视化
在开始清理数据集之前,让我们快速了解一下我们将使用的两种工具:Pandas 和 Jupyter Notebook。
什么是 Pandas?
Pandas 是一个灵活、高性能的开源 Python 库,专门为数据科学家提供数据结构和分析工具。
作为一名开发人员,您会发现 Pandas 就像一个无 GUI 的编程版 Excel。当您将数据导入 Pandas 时,您会得到一个 DataFrame 对象,该对象将您的数据表示为一系列列和行 — 就像您在 Excel 工作表中看到的那样。
这使得分析和清理数据集变得非常容易。执行诸如删除不满足特定标准的行、自动删除具有过多缺失值的列或添加由现有列计算出的新列等操作,通常只需调用一个函数即可完成。
以这种方式处理数据表 — 使用干净、易于理解的 Python 清理和转换数据 — 对于开发人员来说,通常比通过点点鼠标来操作复杂的内置 Excel 函数或编写自定义 VBA 代码要快得多,也更具可移植性。
什么是 Jupyter?
Jupyter 是一个 Web 应用程序,充当数据科学项目的容器。它允许您将数据、代码、可视化、文档等放入一个 Notebook 中。
我得说实话,如果您是一位经验丰富的软件开发人员,习惯于使用像 Eclipse 这样的 IDE 或像 Visual Studio Code 这样的文本编辑器,Jupyter 可能会显得很*奇怪*。
Jupyter 本质上是 Donald Knuth 的 “Literate Programming” 的现代转世。Literate Programming 旨在打破代码和自然语言之间的障碍。在典型的 Literate Programming 文件中,编程代码穿插着用接近自然英语的语言编写的散文,描述代码的功能。
这种方法可能让现代开发人员感到厌恶。毕竟,代码本身不应该足够清晰和自解释,以至于*不需要*注释吗?
对于普通的、机械化的代码来说,这可能是正确的,在这种情况下,代码的功能很明显。但是,在为数据科学和机器学习项目编写代码时,情况就不同了。在这些场景中,您编写的代码通常会被更广泛的受众使用,包括数据科学家、业务分析师,甚至管理人员。
在这些情况下,仅凭代码是不够的。即使读者能够理解代码,您也必须添加散文来为代码提供背景 — 帮助读者理解*为什么*您编写了这些代码,并理解您的代码是如何转换它导入的数据的。
Jupyter Notebooks 将 Literate Programming 推向了一个新的水平。不仅可以轻松地编写交替出现散文和代码的文档,而且代码还是实时的、可执行的。您可以在文档*内部*运行代码并观察其输出。更妙的是,拥有您 Notebook 副本的同事可以编辑您的代码,重新运行它,并观察新的输出 — 所有这些操作都无需离开 Notebook。包含代码、散文和输出的 Notebook 看起来大致是这样的:
不过,别光听我说的。您可以在这里找到一个实时、交互式、可编辑的在线 Jupyter Notebook,供您尝试:在此。
如果这还不够,Jupyter 还让您轻松地将图表和其他可视化嵌入到文档中。因此,例如,如果您从数据库导入数据,对其进行转换,然后想轻松共享结果,您可以将数据输入到几个不同的可视化库中,并且它们生成的图表将直接出现在 Notebook 中。
您甚至可以使用 LaTeX 或 MathML 嵌入 Markdown、视频和数学公式。
最后但并非最不重要的一点:Jupyter 是语言无关的。尽管 Python 是最常见的用例,但您可以在 Notebook 中嵌入和运行多种编程语言。其中包括 Julia、R,甚至 Java、C# 和 F#。如果您是 .NET 开发人员,Scott Hanselman 为您撰写了关于 Jupyter Notebook 的精彩介绍。
安装 Jupyter 和 Pandas
现在您(希望)已经对 Jupyter 和 Pandas 感到兴奋了,我将向您展示最简单的入门方法。
获取 Jupyter、Pandas 以及我们未来进行数据分析任务所需的其他库的最佳方法是安装 Anaconda。这是一个用于数据科学的 Python 发行版,预装了最受欢迎的库。这是使用 Python 快速上手数据科学的最简单方法之一。
我知道 Anaconda 的安装包很大,超过 400MB。虽然您绝对*可以*单独安装 Python、Jupyter 和 Pandas,但我请求您相信,这是安装所有东西并尽量减少麻烦的最简单方法。此外,如果您在本系列学习后决定继续您的数据科学之旅,您会发现 Anaconda 已经为您设置好了大多数所需的工具。
您可以在 Anaconda 下载页面 上找到适用于您操作系统的 Anaconda软件包。请按照下载和安装说明进行操作。安装完成后,您会发现安装程序设置了一个名为 Anaconda Navigator 的应用程序。在 Windows 中,它会在开始菜单中。在 MacOS 中,它会在您的应用程序文件夹中。在 Linux 中,您可以通过打开终端并运行以下命令来运行它:anaconda-navigator
。
接下来,我们将启动我们自己的 Jupyter Notebook。
使用 Anaconda Navigator,打开 Jupyter Notebook 并创建一个新的 Notebook。Notebook 可以被认为是我们上面发现的,它是一个代码、散文和多媒体的集合,可以看作是其他 IDE 称为项目的简化版本。
当您第一次打开 Jupyter Notebook 时,您会看到一行 `In [ ]`。这是一个代码单元格。每个单元格都可以包含由 Notebook 内核运行的代码或要显示的信息。
每个 Notebook 都有一个关联的内核,它是用于编译 Notebook 中代码的运行时。默认是 Python,在大多数情况下也是使用的语言,但您也可以使用其他多种语言。
您还可以通过将代码下拉菜单切换到 Markdown,将代码单元格更改为文档行。
设置和导入库
需要注意的是,在一个单元格中设置和操作的项目在前面的单元格中也是可用的。这允许您将 Notebook 中的代码分成块,使项目更有条理。由于这种行为,通常使用 Notebook 中的第一个单元格来存放将在整个 Notebook 中使用的所有通用设置和库导入。
由于我们将使用 Anaconda 套件中已包含的一些特定 Python 库来加载和操作数据,让我们通过将以下内容添加到第一个代码单元格来设置它们。您可以通过单击 按钮来向文档添加代码单元格。
添加代码单元格后,将以下代码放入其中:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")
如果您将鼠标悬停在代码单元格旁边的方括号上,您会看到一个播放按钮,可以运行单元格中的代码。目前这不会做太多事情,因为我们只是在导入一些库,但别担心,很快我们就会有大量代码要运行了。
正如您所见,我们正在导入四个库:
- Pandas,数据分析库
- NumPy,Pandas 的一个依赖项(我们将不直接使用它)
- Matplotlib,一个数据可视化库
- Seaborn,它为 matplotlib 增加了许多视觉改进
此外,最后一行设置了 Seaborn 的默认样式。让我们通过转到“文件”->“另存为”并输入文件路径来保存 Notebook。值得注意的是,Jupyter 会以您的配置文件目录为基础进行文件系统操作。在 Windows 中,它是 C:\Users\<username>。
评估
我们了解了 Pandas 和 Jupyter 是什么,以及为什么我们可能想要使用它们。
然后,我们学习了如何使用 Anaconda 设置我们自己的数据科学就绪开发环境。
最后,我们快速了解了如何使用 Jupyter Notebook 来设置我们的基于 Python 的数据分析项目,并导入了几个 Python 库,包括用于数据结构的 Pandas 和用于数据可视化的 Seaborn。
接下来,我们将把我们的外部数据源加载到 Pandas 提供的数据结构中,并开始分析和操作我们的基础数据集。
Jupyter 图片来源:https://www.dataquest.io/blog/jupyter-notebook-tutorial/