草庐IT

Python数据清洗:Python和Pandas数据清洗的实用教程

是Dream呀 2023-06-10 原文

前言: 技术书籍是学习技术知识的重要资源之一。读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的、全面的信息,帮助我们快速学习新技能和知识。同时技术书籍有助于保持你的竞争力,因为它们提供了最新的技术知识和实践。这在当今快速发展的技术领域尤为重要,不断学习新知识和技能才能保持竞争力。总之,读技术书对于学习技术知识、提高职业素养和保持竞争力都非常重要。
Dream联合金主爸爸给大家送书啦!本期为大家带来的是 《Python数据清洗》,再次感谢 清华大学出版社 的大力支持;为Dream粉丝带来的丰厚福利。

Dream推荐

《Python数据清洗》详细阐述了与Python数据清洗相关的基本解决方案,是使用Python和Pandas执行数据清洗任务的实用教程,提供了大量的数据清洗操作技巧。

内容简介

《Python数据清洗》详细阐述了与Python数据清洗相关的基本解决方案,主要包括将表格数据导入Pandas中、将HTML和JSON导入Pandas中、衡量数据好坏、识别缺失值和离群值、使用可视化方法识别意外值、使用Series操作清洗和探索数据、聚合时修复混乱数据、组合DataFrame、规整和重塑数据、用户定义的函数和类等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。

文章目录

第1章 将表格数据导入Pandas中 1

1.1 技术要求 1

1.2 导入CSV文件 2

1.2.1 准备工作 2

1.2.2 实战操作 3

1.2.3 原理解释 5

1.2.4 扩展知识 6

1.2.5 参考资料 7

1.3 导入Excel文件 7

1.3.1 准备工作 8

1.3.2 实战操作 8

1.3.3 原理解释 13

1.3.4 扩展知识 13

1.3.5 参考资料 14

1.4 从SQL数据库中导入数据 14

1.4.1 准备工作 15

1.4.2 实战操作 15

1.4.3 原理解释 19

1.4.4 扩展知识 21

1.4.5 参考资料 21

1.5 导入SPSS、Stata和SAS数据 21

1.5.1 准备工作 22

1.5.2 实战操作 22

1.5.3 原理解释 28

1.5.4 扩展知识 29

1.5.5 参考资料 30

1.6 导入R数据 30

1.6.1 准备工作 30

1.6.2 实战操作 31

1.6.3 原理解释 33

1.6.4 扩展知识 34

1.6.5 参考资料 34

1.7 保留表格数据 35

1.7.1 准备工作 36

1.7.2 实战操作 36

1.7.3 原理解释 39

1.7.4 扩展知识 39

第2章 将HTML和JSON导入Pandas中 41

2.1 技术要求 41

2.2 导入简单的JSON数据 41

2.2.1 准备工作 42

2.2.2 实战操作 42

2.2.3 原理解释 47

2.2.4 扩展知识 48

2.3 通过API导入更复杂的JSON数据 48

2.3.1 准备工作 49

2.3.2 实战操作 50

2.3.3 原理解释 52

2.3.4 扩展知识 53

2.3.5 参考资料 53

2.4 从网页中导入数据 53

2.4.1 准备工作 54

2.4.2 实战操作 55

2.4.3 原理解释 58

2.4.4 扩展知识 59

2.5 持久保存JSON数据 59

2.5.1 准备工作 60

2.5.2 实战操作 60

2.5.3 原理解释 62

2.5.4 扩展知识 63

第3章 衡量数据好坏 65

3.1 技术要求 66

3.2 初步了解数据 66

3.2.1 准备工作 66

3.2.2 实战操作 67

3.2.3 原理解释 70

3.2.4 扩展知识 71

3.2.5 参考资料 71

3.3 选择和组织列 71

3.3.1 准备工作 72

3.3.2 实战操作 72

3.3.3 原理解释 77

3.3.4 扩展知识 77

3.3.5 参考资料 78

3.4 选择行 79

3.4.1 准备工作 79

3.4.2 实战操作 79

3.4.3 原理解释 86

3.4.4 扩展知识 87

3.4.5 参考资料 87

3.5 生成分类变量的频率 87

3.5.1 准备工作 88

3.5.2 实战操作 88

3.5.3 原理解释 91

3.5.4 扩展知识 92

3.6 生成连续变量的摘要统计信息 92

3.6.1 准备工作 92

3.6.2 实战操作 93

3.6.3 原理解释 95

3.6.4 参考资料 96

第4章 识别缺失值和离群值 97

4.1 技术要求 97

4.2 寻找缺失值 97

4.2.1 准备工作 98

4.2.2 实战操作 98

4.2.3 原理解释 101

4.2.4 参考资料 101

4.3 用一个变量识别离群值 102

4.3.1 准备工作 102

4.3.2 实战操作 102

4.3.3 原理解释 109

4.3.4 扩展知识 109

4.3.5 参考资料 110

4.4 识别双变量关系中的离群值和意外值 110

4.4.1 准备工作 111

4.4.2 实战操作 112

4.4.3 原理解释 118

4.4.4 扩展知识 119

4.4.5 参考资料 119

4.5 检查变量关系中的逻辑不一致情况 119

4.5.1 准备工作 119

4.5.2 实战操作 120

4.5.3 原理解释 126

4.5.4 参考资料 126

4.6 使用线性回归来确定具有重大影响的数据点 126

4.6.1 准备工作 127

4.6.2 实战操作 127

4.6.3 原理解释 129

4.6.4 扩展知识 130

4.7 使用k最近邻算法找到离群值 130

4.7.1 准备工作 130

4.7.2 实战操作 131

4.7.3 原理解释 133

4.7.4 扩展知识 133

4.7.5 参考资料 134

4.8 使用隔离森林算法查找异常 134

4.8.1 准备工作 134

4.8.2 实战操作 134

4.8.3 原理解释 137

4.8.4 扩展知识 138

4.8.5 参考资料 138

第5章 使用可视化方法识别意外值 139

5.1 技术要求 139

5.2 使用直方图检查连续变量的分布 140

5.2.1 准备工作 140

5.2.2 实战操作 141

5.2.3 原理解释 146

5.2.4 扩展知识 147

5.3 使用箱形图识别连续变量的离群值 147

5.3.1 准备工作 148

5.3.2 实战操作 148

5.3.3 原理解释 153

5.3.4 扩展知识 153

5.3.5 参考资料 153

5.4 使用分组的箱形图发现特定组中的意外值 154

5.4.1 准备工作 154

5.4.2 实战操作 154

5.4.3 原理解释 159

5.4.4 扩展知识 159

5.4.5 参考资料 160

5.5 使用小提琴图检查分布形状和离群值 160

5.5.1 准备工作 160

5.5.2 实战操作 161

5.5.3 原理解释 165

5.5.4 扩展知识 166

5.5.5 参考资料 166

5.6 使用散点图查看双变量关系 166

5.6.1 准备工作 167

5.6.2 实战操作 167

5.6.3 原理解释 172

5.6.4 扩展知识 173

5.6.5 参考资料 173

5.7 使用折线图检查连续变量的趋势 173

5.7.1 准备工作 173

5.7.2 实战操作 173

5.7.3 原理解释 178

5.7.4 扩展知识 179

5.7.5 参考资料 179

5.8 根据相关性矩阵生成热图 179

5.8.1 准备工作 180

5.8.2 实战操作 180

5.8.3 原理解释 182

5.8.4 扩展知识 183

5.8.5 参考资料 183

第6章 使用Series操作清洗和探索数据 185

6.1 技术要求 186

6.2 从Pandas Series中获取值 186

6.2.1 准备工作 186

6.2.2 实战操作 187

6.2.3 原理解释 190

6.3 显示Pandas Series的摘要统计信息 190

6.3.1 准备工作 191

6.3.2 实战操作 191

6.3.3 原理解释 193

6.3.4 扩展知识 195

6.3.5 参考资料 195

6.4 更改Series值 195

6.4.1 准备工作 195

6.4.2 实战操作 195

6.4.3 原理解释 198

6.4.4 扩展知识 199

6.4.5 参考资料 199

6.5 有条件地更改Series值 199

6.5.1 准备工作 199

6.5.2 实战操作 200

6.5.3 原理解释 203

6.5.4 扩展知识 205

6.5.5 参考资料 206

6.6 评估和清洗字符串Series数据 206

6.6.1 准备工作 206

6.6.2 实战操作 206

6.6.3 原理解释 210

6.6.4 扩展知识 211

6.7 处理日期 211

6.7.1 准备工作 211

6.7.2 实战操作 212

6.7.3 原理解释 216

6.7.4 参考资料 217

6.8 识别和清洗缺失的数据 217

6.8.1 准备工作 217

6.8.2 实战操作 217

6.8.3 原理解释 221

6.8.4 扩展知识 221

6.8.5 参考资料 221

6.9 使用k最近邻算法填充缺失值 222

6.9.1 准备工作 222

6.9.2 实战操作 222

6.9.3 原理解释 223

6.9.4 扩展知识 224

6.9.5 参考资料 224

第7章 聚合时修复混乱数据 225

7.1 技术要求 226

7.2 使用itertuples遍历数据 226

7.2.1 准备工作 226

7.2.2 实战操作 227

7.2.3 原理解释 229

7.2.4 扩展知识 230

7.3 使用NumPy数组按组计算汇总 231

7.3.1 准备工作 231

7.3.2 实战操作 231

7.3.3 原理解释 233

7.3.4 扩展知识 234

7.3.5 参考资料 234

7.4 使用groupby组织数据 234

7.4.1 准备工作 234

7.4.2 实战操作 234

7.4.3 原理解释 237

7.4.4 扩展知识 237

7.5 通过groupby使用更复杂的聚合函数 237

7.5.1 准备工作 238

7.5.2 实战操作 238

7.5.3 原理解释 242

7.5.4 扩展知识 243

7.5.5 参考资料 244

7.6 结合groupby使用用户定义的函数 244

7.6.1 准备工作 244

7.6.2 实战操作 244

7.6.3 原理解释 247

7.6.4 扩展知识 247

7.6.5 参考资料 248

7.7 使用groupby更改DataFrame的分析单位 248

7.7.1 准备工作 249

7.7.2 实战操作 249

7.7.3 原理解释 250

第8章 组合DataFrame 251

8.1 技术要求 252

8.2 垂直组合DataFrame 252

8.2.1 准备工作 252

8.2.2 实战操作 253

8.2.3 原理解释 256

8.2.4 参考资料 256

8.3 进行一对一合并 256

8.3.1 准备工作 258

8.3.2 实战操作 258

8.3.3 原理解释 262

8.3.4 扩展知识 263

8.4 按多列进行一对一合并 263

8.4.1 准备工作 263

8.4.2 实战操作 263

8.4.3 原理解释 266

8.4.4 扩展知识 266

8.5 进行一对多合并 266

8.5.1 准备工作 267

8.5.2 实战操作 267

8.5.3 原理解释 271

8.5.4 扩展知识 271

8.5.5 参考资料 271

8.6 进行多对多合并 271

8.6.1 准备工作 272

8.6.2 实战操作 272

8.6.3 原理解释 276

8.6.4 扩展知识 277

8.7 开发合并例程 277

8.7.1 准备工作 277

8.7.2 实战操作 278

8.7.3 原理解释 279

8.7.4 参考资料 280

第9章 规整和重塑数据 281

9.1 技术要求 282

9.2 删除重复的行 282

9.2.1 准备工作 282

9.2.2 实战操作 283

9.2.3 原理解释 285

9.2.4 扩展知识 286

9.2.5 参考资料 286

9.3 修复多对多关系 286

9.3.1 准备工作 287

9.3.2 实战操作 287

9.3.3 原理解释 291

9.3.4 扩展知识 292

9.3.5 参考资料 292

9.4 使用stack和melt将数据由宽变长 292

9.4.1 准备工作 293

9.4.2 实战操作 293

9.4.3 原理解释 297

9.5 使用wide_to_long处理多列 297

9.5.1 准备工作 297

9.5.2 实战操作 297

9.5.3 原理解释 299

9.5.4 扩展知识 299

9.6 使用unstack和pivot将数据由长变宽 300

9.6.1 准备工作 300

9.6.2 实战操作 300

9.6.3 原理解释 302

第10章 用户定义的函数和类 303

10.1 技术要求 303

10.2 用于查看数据的函数 303

10.2.1 准备工作 304

10.2.2 实战操作 304

10.2.3 原理解释 307

10.2.4 扩展知识 308

10.3 用于显示摘要统计信息和频率的函数 308

10.3.1 准备工作 308

10.3.2 实战操作 309

10.3.3 原理解释 313

10.3.4 扩展知识 313

10.3.5 参考资料 313

10.4 识别离群值和意外值的函数 314

10.4.1 准备工作 314

10.4.2 实战操作 315

10.4.3 原理解释 319

10.4.4 扩展知识 319

10.4.5 参考资料 319

10.5 聚合或合并数据的函数 319

10.5.1 准备工作 320

10.5.2 实战操作 320

10.5.3 原理解释 325

10.5.4 扩展知识 325

10.5.5 参考资料 326

10.6 包含更新Series值逻辑的类 326

10.6.1 准备工作 326

10.6.2 实战操作 326

10.6.3 原理解释 330

10.6.4 扩展知识 331

10.6.5 参考资料 331

10.7 处理非表格数据结构的类 331

10.7.1 准备工作 332

10.7.2 实战操作 333

10.7.3 原理解释 336

10.7.4 扩展知识 336

写作感悟

本书是一本实用的数据清洗指南。从广义上说,数据清洗被定义为准备数据进行分析所需的所有任务。它通常由在数据清洗过程中完成的任务组成,即导入数据、以诊断方式查看数据、识别异常值和意外值、估算和填充缺失值、规整数据等。本书每个秘笈都会引导读者对原始数据执行特定的数据清洗任务。

目前市面上已经有许多非常好的Pandas书籍,但是本书有自己的特色,我们将重点放在实战操作和原理解释上。

由于Pandas还相对较新,因此我们所学到的有关清洗数据的经验是受使用其他工具的经验影响的。大约在2012年,作者开始使用Python和R适应其时的工作需要,在21世纪初主要使用的是C#和T-SQL,在20世纪90年代主要使用的是SAS和Stata,在20世纪80年代主要使用的是FORTRAN和Pascal。本书的大多数读者可能都有使用各种数据清洗和分析工具的经验。

无论你喜欢使用什么工具,其重要性都比不上数据准备任务和数据属性。如果让作者撰写《SAS数据清洗秘笈》或《R数据清洗秘笈》,那么讨论的主题也几乎是一样的。本书只是采用与Python/Pandas相关的方法来解决分析师数十年来面临的相同数据清洗挑战。

在讨论如何使用Python生态系统中的工具(Pandas、NumPy、Matplotlib和SciPy等)进行处理之前,作者会在每章的开头介绍如何思考特定的数据清洗任务。在每个秘笈中,作者会介绍它对于数据发现的含义。

本书尝试将工具和目的连接起来。例如,我们阐释偏度和峰度之类的概念,这对于处理离群值是非常重要的,同时我们又介绍箱形图等可视化工具,强化读者对于偏度和峰度等概念的理解。

本书读者

本书适合那些寻求使用不同的Python工具和技术处理混乱数据的读者。本书采用基于秘笈的方法来帮助读者学习如何清洗和管理数据。要充分理解本书操作,你应该掌握一定的Python编程知识。

内容介绍

本书共包含10章,具体内容如下。

第1章“将表格数据导入Pandas中”,探讨将CSV文件、Excel文件、关系数据库表、SPSS、Stata和SAS文件以及R文件等加载到Pandas DataFrame中的工具。

第2章“将HTML和JSON导入Pandas中”,讨论读取和规范化JSON数据以及从网页抓取数据的技术。

第3章“衡量数据好坏”,介绍在DataFrame中定位、选择列和行以及生成摘要统计信息的常用技术。

第4章“识别缺失值和离群值”,探讨如何采用不同的策略来识别整个DataFrame和选定组中的缺失值和离群值。

第5章“使用可视化方法识别意外值”,演示如何使用Matplotlib和Seaborn工具来可视化关键变量的分布方式,常见的可视化方法包括直方图、箱形图、散点图、折线图和小提琴图等。

第6章“使用Series操作清洗和探索数据”,讨论如何基于一个或多个Series的值,使用标量、算术运算和条件语句更新Pandas系列。

第7章“聚合时修复混乱数据”,演示按分组汇总数据的多种方法,并讨论多种聚合方法之间的区别。

第8章“组合DataFrame”,探讨用于连接和合并数据的不同策略,以及合并数据时可能遇到的常见问题。

第9章“规整和重塑数据”,详细介绍若干种用于删除重复数据、堆叠、合并和旋转的策略。

第10章“用户定义的函数和类”,探讨如何通过函数和类的形式将前9章中的许多技术转变为可重用的代码。

充分利用本书

要充分利用本书,你需要具备有关Python编程的一些基础知识。另外,也可以使用Google Colab(免费的Jupyter Notebook环境,云端运行,通过浏览器即可使用,可以编写和执行代码,保存和共享分析结果)。

编写体例

本书大多数章节以秘笈形式编写,每一节就是一个秘笈,每个秘笈中又分别包括“准备工作”“实战操作”“原理解释”“扩展知识”“参考资料”小节(部分秘笈不包含“扩展知识”和“参考资料”),使读者既能学习Pandas实用操作,又能了解其相关知识和原理,真正理解和掌握数据清洗技巧。
本书购买链接

获取方式

此文章下评论:人生苦短,我用Python!即可参与抽取书籍活动! 评论区抽出三位小伙伴免费送出,感谢大家支持,我们评论区见!

有关Python数据清洗:Python和Pandas数据清洗的实用教程的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  4. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  5. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  6. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  7. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  10. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

随机推荐