数据预处理是数据可视化、数据分析和机器学习的第一步,它将为分析和预测模型准备数据以帮助分析师获得最佳见解。分析师在执行数据分析、数据可视化和机器学习项目时,大约90%的时间都花在数据预处理上。
本书将从多个角度为读者提供最佳的数据预处理技术。读者将了解数据预处理的不同技术和分析过程(包括数据收集、数据清洗、数据集成、数据归约和数据转换等),并掌握如何使用开源Python编程环境来实现它们。
本书将全面阐述数据预处理及其原因和方法,并帮助读者识别数据分析可以带来的更有效的决策机会。本书还展示了数据管理系统和技术在有效分析中的作用,以及如何使用API来提取数据。
通读完本书之后,读者将能够使用Python来读取、操作和分析数据;执行数据清洗、集成、归约和转换技术;处理异常值或缺失值,以有效地为分析工具准备数据。
本书读者
希望对大量数据进行预处理和数据清洗的数据分析师、商业智能专业人士、工程本科生和数据爱好者。本书假设读者具备基本的编程技能(例如使用变量、条件和循环),以及Python初级知识和简单的分析经验。
内容介绍
本书分为4篇,共18章。具体内容安排如下。
* 第1篇:技术基础,包括第1章~第4章。
> 第1章“NumPy和Pandas简介”,介绍了用于数据操作的3个主要模块中的两个,并使用真实的数据集示例来展示它们的相关功能。
> 第2章“Matplotlib简介”,介绍了用于数据操作的3个模块中的最后一个,并使用了真实的数据集示例来展示其相关功能。
> 第3章“数据”,提出了“数据”的技术定义,并介绍了数据预处理所需的数据概念和语言,包括通用的数据结构、数据值的类型、信息与模式等。
> 第4章“数据库”,提出了“数据库”的技术定义,解释了不同类型的数据库的作用,并演示了如何连接数据库并从中提取数据。
* 第2篇:分析目标,包括第5章~第8章。
> 第5章“数据可视化”,演示了一些使用数据可视化的分析示例,让读者了解数据可视化的潜力。
> 第6章“预测”,介绍了预测模型并演示了如何使用线性回归和多层感知器(MLP)。
> 第7章“分类”,介绍了分类模型并演示了如何使用决策树和K近邻(KNN)算法。
> 第8章“聚类分析”,介绍了聚类模型并演示了如何使用K-Means算法。
* 第3篇:预处理,包括第9章~第14章。
> 第9章“数据清洗1级—清洗表”,介绍了3个不同级别的数据清洗,并讨论了具体的数据清洗1级示例。
> 第10章“数据清洗2级—解包、重组和重制表”,通过3个示例介绍了数据清洗2级的具体内容。
> 第11章“数据清洗3级—处理缺失值、异常值和误差”,介绍了缺失值、异常值和误差的检测和处理技术。
> 第12章“数据融合与数据集成”,介绍了集成不同数据源的技术,详细探讨了数据集成面临的6个挑战及其解决方法。
> 第13章“数据归约”,介绍了数据归约的目标和类型(样本归约和特征归约)。对于样本归约,提供了随机抽样和分层抽样示例;对于特征归约(也称为降维),介绍了线性回归、决策树、随机森林、暴力计算、主成分分析和函数型数据分析等方法。
> 第14章“数据转换”,介绍了数据转换和按摩,通过示例讨论了归一化和标准化、二进制编码、排序转换和离散化、特性构造、特征提取、对数转换、平滑、聚合和分箱等数据转换操作在分析上的意义。
* 第4篇:案例研究,包括第15章~第18章。
> 第15章“案例研究1—科技公司中员工的心理健康问题”,介绍了具体的分析问题并讨论了如何预处理数据以解决它。
> 第16章“案例研究2—新冠肺炎疫情住院病例预测”,介绍了一个非常有意义的热点分析问题并讨论了如何预处理数据以解决该问题。
> 第17章“案例研究3—美国各县聚类分析”,针对美国大选基于居住地分裂投票的现象提出了一个颇有意思的分析问题,并讨论了如何对数据进行预处理以解决该问题。
> 第18章“总结、实际案例研究和结论”,介绍了一些可能的实践案例,读者可以使用这些案例进行更深入的学习并创建分析组合工具包。
充分利用本书
本书假定读者具备基本的编程技能,并掌握了Python的初级知识,其他知识都可以从本书的开头开始学习。
Jupyter Notebook是学习和练习编程和数据分析的优秀用户界面。它可以使用Anaconda Navigator 轻松下载和安装。读者可以访问以下页面进行安装。
本书涵盖的软硬件和操作系统需求如表P.1所示。
表P.1 本书涵盖的软硬件和操作系统需求
本书涵盖的软硬件
操作系统需求
使用Jupyter Notebook的Python
Windows或macOS
虽然Anaconda已经安装了本书使用的大部分模块,但读者还需要安装一些其他模块,如Seaborn和Graphviz。不过不必担心,因为在使用之前本书将指导读者如何进行安装。
建议读者自己输入代码或从本书的GitHub存储库获得代码(下文将提供本书配套GitHub存储库链接),这样可以帮助你避免与复制和粘贴代码相关的任何潜在错误。
在学习的同时,可以将每一章的代码保存在一个文件中,形成学习存储库,以便进行更深入的学习并在实际项目中使用。Jupyter Notebook尤其适合此用途,因为它允许读者将代码和笔记保存在一起。
下载示例代码文件
如果代码有更新,那么它将在该GitHub存储库中更新。
下载彩色图像
我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。可通过以下地址下载。
本书约定
本书中使用了许多文本约定。
(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄等。以下段落就是一个示例。
对于本次练习,你需要使用一个新数据集:billboard.csv。可访问以下网址以查看当天最新的歌曲排名。
(2)有关代码块的设置如下。
from ipywidgets import interact, widgets
interact(plotyear,year=widgets.
IntSlider(min=2010,max=2019,step=1,value=2010))
(3)要突出代码块时,相关内容将加粗显示。
Xs_t.plot.scatter(x='PC1',y='PC2',c='PC3',sharex=False,
vmin=-1/0.101, vmax=1/0.101,
figsize=(12,9))
x_ticks_vs = [-2.9*4 + 2.9*i for i in range(9)]
(4)术语或重要单词采用中英文对照形式给出,在括号内保留其英文原文。示例如下。
由于这些差异,分类和预测被称为监督学习(supervised learning,也称为有监督学习),而聚类则被称为无监督学习(unsupervised learning)。
(5)对于界面词汇或专有名词将保留英文原文,在括号内添加其中文翻译。示例如下。
由于我们只有两个维度来执行聚类,因此可以利用散点图根据所讨论的两个特性—Life_Ladder(生活阶梯)和Perceptions_of_corruption(腐败程度感知)来可视化所有国家/地区之间的关系。
(6)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。