内容简介
《从零开始学Python数据分析与挖掘》以Python3版本作为数据分析与挖掘实战的应用工具,从Pyhton的基础语法开始,陆续介绍有关数值计算的Numpy、数据处理的Pandas、数据可视化的Matplotlib和数据挖掘的Sklearn等内容。《从零开始学Python数据分析与挖掘》共涵盖15种可视化图形以及10个常用的数据挖掘算法和实战项目,通过《从零开始学Python数据分析与挖掘》的学习,读者可以掌握数据分析与挖掘的理论知识和实战技能。
《从零开始学Python数据分析与挖掘》适于统计学、数学、经济学、金融学、管理学以及相关理工科专业的本科生、研究生使用,也能够提高从事数据咨询、研究或分析等人士的专业水平和技能。
作者简介
刘顺祥,
统计学硕士,“数据分析1480”微信公众号运营者。曾就职于大数据咨询公司,为联想、亨氏、美丽田园、网鱼网咖等企业项目提供服务;曾在唯品会大数据部担任数据分析师一职,负责电商支付环节的数据分析业务。
目录
目录
第1章数据分析与挖掘概述1
1.1什么是数据分析和挖掘1
1.2数据分析与挖掘的应用领域2
1.2.1电商领域——发现破坏规则的“害群之马”2
1.2.2交通出行领域——为打车平台进行私人订制3
1.2.3医疗健康领域——找到最佳医疗方案3
1.3数据分析与挖掘的区别4
1.4数据挖掘的流程5
1.4.1明确目标5
1.4.2数据搜集6
1.4.3数据清洗6
1.4.4构建模型7
1.4.5模型评估7
1.4.6应用部署8
1.5常用的数据分析与挖掘工具8
1.6本章小结9
第2章从收入的预测分析开始10
2.1下载与安装Anoconda10
2.1.1基于Windows系统安装11
2.1.2基于Mac系统安装12
2.1.3基于Linux系统安装14
2.2基于Python的案例实战14
2.2.1数据的预处理14
2.2.2数据的探索性分析16
2.2.3数据建模19
2.3本章小结28
第3章Python快速入门29
3.1数据结构及方法29
3.1.1列表29
3.1.2元组34
3.1.3字典35
3.2控制流38
3.2.1if分支38
3.2.2for循环39
3.2.3while循环41
3.3字符串处理方法43
3.3.1字符串的常用方法43
3.3.2正则表达式45
3.4自定义函数47
3.4.1自定义函数语法47
3.4.2自定义函数的几种参数49
3.5一个爬虫案例52
3.6本章小结54
第4章Python数值计算工具——Numpy56
4.1数组的创建与操作56
4.1.1数组的创建56
4.1.2数组元素的获取57
4.1.3数组的常用属性58
4.1.4数组的形状处理59
4.2数组的基本运算符62
4.2.1四则运算62
4.2.2比较运算63
4.2.3广播运算65
4.3常用的数学和统计函数66
4.4线性代数的相关计算67
4.4.1矩阵乘法68
4.4.2diag函数的使用69
4.4.3特征根与特征向量69
4.4.4多元线性回归模型的解70
4.4.5多元一次方程组的求解70
4.4.6范数的计算71
4.5伪随机数的生成71
4.6本章小结74
第5章Python数据处理工具——Pandas76
5.1序列与数据框的构造76
5.1.1构造序列77
5.1.2构造数据框78
5.2外部数据的读取79
5.2.1文本文件的读取79
5.2.2电子表格的读取81
5.2.3数据库数据的读取83
5.3数据类型转换及描述统计85
5.4字符与日期数据的处理89
5.5常用的数据清洗方法93
5.5.1重复观测处理93
5.5.2缺失值处理94
5.5.3异常值处理97
5.6数据子集的获取99
5.7透视表功能101
5.8表之间的合并与连接104
5.9分组聚合操作107
5.10本章小结108
第6章Python数据可视化110
6.1离散型变量的可视化110
6.1.1饼图110
6.1.2条形图115
6.2数值型变量的可视化125
6.2.1直方图与核密度曲线125
6.2.2箱线图129
6.2.3小提琴图133
6.2.4折线图135
6.3关系型数据的可视化139
6.3.1散点图139
6.3.2气泡图142
6.3.3热力图144
6.4多个图形的合并146
6.5本章小结148
第7章线性回归预测模型150
7.1一元线性回归模型150
7.2多元线性回归模型153
7.2.1回归模型的参数求解154
7.2.2回归模型的预测155
7.3回归模型的假设检验157
7.3.1模型的显著性检验——F检验158
7.3.2回归系数的显著性检验——t检验160
7.4回归模型的诊断162
7.4.1正态性检验162
7.4.2多重共线性检验164
7.4.3线性相关性检验165
7.4.4异常值检验167
7.4.5独立性检验170
7.4.6方差齐性检验170
7.5本章小结173
第8章岭回归与LASSO回归模型174
8.1岭回归模型174
8.1.1参数求解175
8.1.2系数求解的几何意义176
8.2岭回归模型的应用177
8.2.1可视化方法确定?值177
8.2.2交叉验证法确定?值179
8.2.3模型的预测180
8.3LASSO回归模型182
8.3.1参数求解182
8.3.2系数求解的几何意义183
8.4LASSO回归模型的应用184
8.4.1可视化方法确定?值184
8.4.2交叉验证法确定?值186
8.4.3模型的预测187
8.5本章小结189
第9章Logistic回归分类模型190
9.1Logistic模型的构建191
9.1.1Logistic模型的参数求解193
9.1.2Logistic模型的参数解释195
9.2分类模型的评估方法195
9.2.1混淆矩阵196
9.2.2ROC曲线197
9.2.3K-S曲线198
9.3Logistic回归模型的应用200
9.3.1模型的构建200
9.3.2模型的预测202
9.3.3模型的评估203
9.4本章小结207
第10章决策树与随机森林208
10.1节点字段的选择209
10.1.1信息增益210
10.1.2信息增益率212
10.1.3基尼指数213
10.2决策树的剪枝216
10.2.1误差降低剪枝法217
10.2.2悲观剪枝法217
10.2.3代价复杂度剪枝法219
10.3随机森林220
10.4决策树与随机森林的应用222
10.4.1分类问题的解决222
10.4.2预测问题的解决229
10.5本章小结231
第11章KNN模型的应用233
11.1KNN算法的思想233
11.2最佳k值的选择234
11.3相似度的度量方法235
11.3.1欧式距离235
11.3.2曼哈顿距离236
11.3.3余弦相似度236
11.3.4杰卡德相似系数237
11.4近邻样本的搜寻方法238
11.4.1KD树搜寻法238
11.4.2球树搜寻法242
11.5KNN模型的应用244
11.5.1分类问题的解决245
11.5.2预测问题的解决248
11.6本章小结251
第12章朴素贝叶斯模型253
12.1朴素贝叶斯理论基础253
12.2几种贝叶斯模型255
12.2.1高斯贝叶斯分类器255
12.2.2高斯贝叶斯分类器的应用257
12.2.3多项式贝叶斯分类器259
12.2.4多项式贝叶斯分类器的应用261
12.2.5伯努利贝叶斯分类器264
12.2.6伯努利贝叶斯分类器的应用266
12.3本章小结271
第13章SVM模型的应用272
13.1SVM简介273
13.1.1距离公式的介绍273
13.1.2SVM的实现思想274
13.2几种常见的SVM模型276
13.2.1线性可分的SVM276
13.2.2一个手动计算的案例279
13.2.3近似线性可分SVM281
13.2.4非线性可分SVM284
13.2.5几种常用的SVM核函数285
13.2.6SVM的回归预测287
13.3分类问题的解决289
13.4预测问题的解决291
13.5本章小结294
第14章GBDT模型的应用296
14.1提升树算法297
14.1.1AdaBoost算法的损失函数297
14.1.2AdaBoost算法的操作步骤299
14.1.3AdaBoost算法的简单例子300
14.1.4AdaBoost算法的应用302
14.2梯度提升树算法308
14.2.1GBDT算法的操作步骤308
14.2.2GBDT分类算法309
14.2.3GBDT回归算法309
14.2.4GBDT算法的应用310
14.3非平衡数据的处理313
14.4XGBoost算法315
14.4.1XGBoost算法的损失函数315
14.4.2损失函数的演变317
14.4.3XGBoost算法的应用319
14.5本章小结324
第15章Kmeans聚类分析326
15.1Kmeans聚类327
15.1.1Kmeans的思想327
15.1.2Kmeans的原理328
15.2最佳k值的确定329
15.2.1拐点法329
15.2.2轮廓系数法332
15.2.3间隔统计量法333
15.3Kmeans聚类的应用336
15.3.1iris数据集的聚类336
15.3.2NBA球员数据集的聚类339
15.4Kmeans聚类的注意事项343
15.5本章小结343
第16章DBSCAN与层次聚类分析345
16.1密度聚类简介345
16.1.1密度聚类相关的概念346
16.1.2密度聚类的步骤347
16.2密度聚类与Kmeans的比较349
16.3层次聚类353
16.3.1簇间的距离度量354
16.3.2层次聚类的步骤356
16.3.3三种层次聚类的比较357
16.4密度聚类与层次聚类的应用359
16.5本章小结365
前言/序言
前言
为什么写这《从零开始学Python数据分析与挖掘》
随着大数据时代的演进,越来越多的企业在搜集数据的同时,也开始关注并重视数据分析与挖掘的价值,因为他们正尝到这项技术所带来的甜头。例如,通过该技术可以帮助企业很好地认识其用户的画像特征,为用户提供个性化的优质服务,进而使用户的忠诚度不断提升;通过该技术提前识别出不利于企业健康发展的“毒瘤”用户(如黄牛群体、欺诈群体等),进而降低企业不必要的损失;通过该技术可以为企业实现某些核心指标的判断和预测,进而为企业高层的决策提供参考依据等。企业对数据分析与挖掘技术的重视就意味着对人才的重视,这就要求希望或正在从事数据相关岗位的人员具备该技术的理论知识和实战能力。
Python作为大数据相关岗位的应用利器,具有开源、简洁易读、快速上手、多场景应用以及完善的生态和服务体系等优点,使其在数据分析与挖掘领域中的地位显得尤为突出。基于Python可以对各种常见的脏数据完成清洗、绘制各式各样的统计图形,并实现各种有监督、无监督和半监督的机器学习算法的落地,在数据面前做到游刃有余,所以说Python是数据分析与挖掘工作的不二之选。根据多家招聘网站的统计,几乎所有的数据分析或挖掘岗位都要求应聘者掌握至少一种编程语言,其中就包括Python。
纵观国内的图书市场,关于Python的书籍还是非常多的,它们主要偏向于工具本身的用法,如关于Python的语法、参数、异常处理、调用以及开发类实例等。但是基于Python的数据分析与挖掘书籍并不是特别多,关于这方面技术的书籍更多的是基于R语言等工具。《从零开始学Python数据分析与挖掘》将通过具体的实例讲解数据的处理和可视化技术,同时也结合数据挖掘的理论知识和项目案例讲解10种常用的挖掘算法。
2015年9月,笔者申请了微信公众号,取名为“数据分析1480”,目前已经陆续更新了近200篇文章。一方面是为了将自己所学、所知记录下来,作为自己的知识沉淀;另一方面是希望尽自己的微薄之力,将记录下来的内容分享给更多热爱或从事数据分析与挖掘事业的朋友。但是公众号的内容并没有形成系统的知识框架,在王金柱老师的鼓励和支持下才开始了《从零开始学Python数据分析与挖掘》的写作,希望读者能够从中获得所需的知识点。
《从零开始学Python数据分析与挖掘》的内容
《从零开始学Python数据分析与挖掘》一共分为三大部分,系统地介绍数据分析与挖掘过程中所涉及的数据清洗与整理、数据可视化以及数据挖掘的落地。
第一部分(第1~3章)介绍有关数据分析与挖掘的概述以及Python的基础知识,并通过一个有趣的案例引入《从零开始学Python数据分析与挖掘》内容的学习。本部分内容可以为初学Python的朋友奠定基础,进而为后续章节的学习做准备。
第二部分(第4~6章)涉及numpy模块的数值计算、Pandas模块的数据清洗与整理以及Matplotlib模块的可视化技术。本部分内容可以为数据预处理过程中的清洗、整理以及探索性分析环节提供技术支撑。
第三部分(第7~16章)一共包含10种数据挖掘算法的应用,如线性回归、决策树、支持向量机、GBDT等,使用通俗易懂的术语介绍每一个挖掘算法的理论知识,并借助于具体的数据项目完成算法的实战。本部分内容可以提高热爱或从事数据分析相关岗位朋友的水平和技能,也可以作为数据挖掘算法落地的模板。
《从零开始学Python数据分析与挖掘》每一章都有对应的数据源和完整代码,代码均包含具体的中文注释,读者可以在笔者的github网站https://github.com/SnakeLiu/Python-Data-Aanalysis-and-Miner下载,或者在百度网盘https://pan.baidu.com/s/18REQ_J057i7KL7ivBCX-cw(密码:xt4i)下载。
勘误和支持
由于笔者水平有限,书中难免会出现不当的地方,欢迎专家和读者朋友给予批评和指正。可以通过下方的途径联系并反馈建议:
?即时通信:添加个人微信(lsx19890717)或者QQ(1029776077),及时反馈问题。
?公众号:添加个人微信公众号“数据分析1480”,可参与后台互动。
?电子邮箱:发送邮件至lsxxx2011@163.com。
致谢
特别感谢清华大学出版社的王金柱老师,感谢他的热情相邀和宝贵建议,是他促成了《从零开始学Python数据分析与挖掘》的完成,同时他专业而高效的审阅也使《从零开始学Python数据分析与挖掘》增色不少。感谢参与《从零开始学Python数据分析与挖掘》封面设计的王翔老师、责任校对闫秀华老师,以及其他背后默默支持的出版工作者,在他们的努力和付出下,保证了《从零开始学Python数据分析与挖掘》的顺利出版。
最后,感谢我的家人和朋友,尤其是我的妻子许欣女士,是她在我写书期间把家里的一切整理得有条不紊,对我的照顾更是无微不至,才使我能够聚精会神地完成《从零开始学Python数据分析与挖掘》全部内容的撰写。
刘顺祥(SimLiu)
2018年8月于上海