目录
在深入研究数据清理之前,我们将首先了解为什么要使用Jupyter Notebooks和Pandas数据分析库之类的工具,而不是仅仅使用Python。
系列总览
本文是帮助工作中的开发人员快速掌握数据科学工具和技术的系列文章的第一篇。我们将从对该系列的简要介绍开始,并解释我们将要介绍的所有内容。
从事数据分析和机器学习(ML)项目的开发人员和数据科学家将大部分时间用于查找、清理和组织数据集。在这个介绍性系列文章中,我们将介绍一些最常见的数据清理方案,包括:
- 可视化“混乱”数据
- 重塑数据集
- 替换缺失值
- 删除并修复不完整的行
- 规范化数据类型
- 合并数据集
我们将通过在Jupyter notebook中使用Python,Pandas和Seaborn来清理样本零售店的凌乱客户数据库,以实现此目的。这个由七个部分组成的系列文章将对第一轮凌乱的数据进行处理,清理,并开发出一组可视化的图像来突出我们的工作。以下是本系列的内容:
- 第1部分-介绍Jupyter和Pandas
- 第2部分-将CSV和SQL数据加载到Pandas中
- 第3部分-纠正Pandas中的缺失数据
- 第4部分-合并Pandas中的多个数据集
- 第5部分-清理Pandas DataFrame中的数据
- 第6部分-重塑Pandas DataFrame中的数据
- 第7部分-使用Seaborn和Pandas进行数据可视化
在开始清理数据集之前,让我们快速看一下将要使用的两个工具:Pandas和Jupyter Notebooks。
什么是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 programmin旨在打破代码与自然语言之间的障碍。在典型的识字编程文件中,编程代码散布在散文中,而散文使用的是类似于英语的自然语言,描述了代码的作用。
对于现代开发人员而言,这种方法可能令人讨厌。毕竟,您的代码难道不应该如此清晰明了,不需要说明吗?
对于清楚地说明发生了什么的普通机械代码,这可能是正确的。但是,当您为数据科学和机器学习项目编写代码时,情况就不同了。在这些情况下,您经常编写的代码将被包括数据科学家、业务分析师甚至经理在内的更广泛的受众所使用。
在这种情况下,仅您的代码是不够的。即使读者理解代码,您也必须添加散文来为代码提供上下文——帮助读者理解编写代码的原因,并理解代码如何转换其导入的数据。
Jupyter Notebooks使识字编程更进一步。不仅容易编写在散文和代码之间交替的文档,而且代码是实时且可执行的。您可以运行代码并从文档内部观察其输出。甚至更好的是,拥有notebook副本的同事可以编辑代码,重新运行代码并观察新的输出——所有这些都无需离开notebook。包含代码、散文和输出的notebook看起来像这样:
但是,不要只听我的话。您可以在此处找到一个实时、交互式、可编辑的在线Jupyter Notebook,以进行试验。
如果还不够,Jupyter可以轻松地在文档中嵌入图表和其他可视化效果。因此,例如,如果您从数据库导入数据,对其进行转换,然后想要轻松共享结果,则可以将数据输入几个不同的可视化库中,它们生成的图表将直接出现在notebook中。
您甚至可以使用LaTeX或MathML嵌入Markdown、视频和数学方程式。
最后但并非最不重要:Jupyter与语言无关。尽管Python是最常见的用例,但是您可以在notebook中嵌入并运行许多编程语言。这些包括Julia,R,甚至Java,C#和F#。如果您是.NET开发人员,Scott Hanselman会为您撰写Jupyter Notebooks的精彩介绍。
安装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,在大多数情况下,它是使用的语言,但是您也可以使用许多其他语言。
您还可以通过将代码下拉列表切换为标记下拉列表,将代码单元更改为文档行。
设置和导入库
重要的是要注意,在一个单元格中设置和操作的项目在前面的单元格中可用。这使您可以分解notebook中的代码并使项目更井井有条。由于这种行为,通常在notebook中使用第一个单元来保存将在整个notebook中使用的所有通用设置和库导入。
由于我们将使用Anaconda产品套件中已包含的某些特定Python库加载和处理数据,因此我们将它们添加到Jupyter notebook中,并在第一个代码单元中添加以下内容,以进行设置。您可以通过单击按钮将代码单元添加到文档中。
添加代码单元后,将以下代码放入其中:
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 Notebooks建立了基于Python的数据分析项目,并导入了一些Python库,包括用于数据结构的Pandas和用于数据可视化的Seaborn。
接下来,我们将外部数据源加载到Pandas提供的数据结构中,并开始分析和操作我们的基本数据集。