python爬虫实战数据可视化分析的软件_Python爬虫、数据分析与可视化:工具详解与案例实战...

本书从Python基础开始,涵盖编程环境搭建、基本语法、数据结构、面向对象编程、异常处理、文件读写,深入讲解NumPy数组处理、Pandas数据清洗、Matplotlib数据可视化,并通过网络爬虫获取数据,结合实际案例进行数据分析。内容包括Scrapy爬虫框架、Pandas_datareader库、MySQL数据存储、概率统计、回归分析,以及股票市场数据的分析与可视化。最后,通过机器学习算法进行数据分析,涉及线性回归、SVM、KNN等模型。
摘要由CSDN通过智能技术生成

前言

第1章 Python编程基础1

1.1 搭建Python开发环境1

1.1.1 安装Python解释器1

1.1.2 安装Python第三方开发包2

1.1.3 在PyCharm里新建项目和文件3

1.1.4 在PyCharm里更换Python解释器5

1.2 实践Python基本语法5

1.2.1 针对基本数据类型的操作6

1.2.2 针对字符串的操作7

1.2.3 多行注释与引入中文8

1.2.4 条件分支语句9

1.2.5 循环操作语句9

1.2.6 break和continue的用法10

1.2.7 格式化输出语句11

1.3 定义和调用函数11

1.4 return的重要性——函数的递归调用12

1.5 熟悉函数的特殊写法13

1.5.1 函数作为参数14

1.5.2 函数作为返回结果14

1.5.3 匿名函数15

1.6 本章小结15

第2章 Python的数据结构16

2.1 列表16

2.1.1 定义列表16

2.1.2 在列表中增、删、改元素17

2.1.3 列表的切片操作18

2.1.4 遍历列表19

2.1.5 列表的常见用法19

2.2 元组20

2.2.1 创建和使用元组20

2.2.2 元组的常见用法21

2.3 集合22

2.3.1 创建和使用集合22

2.3.2 针对集合的常用数据操作23

2.4 字典23

2.4.1 创建和使用字典24

2.4.2 增加、删除和修改字典中的元素24

2.4.3 遍历字典25

2.5 针对数据结构的通用性操作25

2.5.1 通过map方法实现序列的映射25

2.5.2 filter方法与数据筛选26

2.5.3 通过reduce方法实现累计效果27

2.5.4 通过sorted方法排序对象27

2.6 本章小结28

第3章 Python面向对象编程29

3.1 什么是面向对象思想29

3.2 封装特性30

3.2.1 创建类并在类里封装属性和方法30

3.2.2 类方法的第一个参数必须指向实例31

3.2.3 私有属性的典型错误用法31

3.2.4 了解其他常用魔术方法33

3.2.5 从私有属性和私有方法体会封装特性34

3.3 继承特性35

3.3.1 继承的语法和使用场景35

3.3.2 子类无法使用父类的私有属性和方法36

3.3.3 受保护的属性和方法37

3.3.4 多重继承与组合模式38

3.4 多态特性40

3.4.1 以迭代器为例来理解多态40

3.4.2 可变参数与方法重载41

3.4.3 整合使用多态和继承42

3.5 模块、包以及第三方库43

3.5.1 通过import重用现有模块中的功能43

3.5.2 自定义包和使用包43

3.5.3 引入并使用第三方库44

3.6 本章小结45

第4章 异常处理机制与文件读写46

4.1 通过try…except…finally处理异常46

4.1.1 处理异常的try…except从句46

4.1.2 使用异常处理类47

4.1.3 同时处理多个异常48

4.1.4 在处理异常时引入else代码块49

4.1.5 引入finally从句50

4.2 raise与except的整合使用51

4.2.1 通过raise抛出异常51

4.2.2 自定义异常且与except整合使用51

4.3 异常处理的实践经验52

4.3.1 尽可能缩小try的代码块53

4.3.2 用专业的异常处理类针对性地处理异常53

4.3.3 拿到异常别忽视54

4.3.4 合理确定异常的影响范围54

4.4 在读写文件案例中使用异常机制55

4.4.1 通过os.path获取目录和文件属性55

4.4.2 以只读模式打开文件56

4.4.3 逐行读取文件58

4.4.4 通过write写文件59

4.4.5 以添加的方式写文件59

4.4.6 读写csv文件60

4.5 本章小结61

第5章 NumPy数组处理62

5.1 NumPy库的基础数据结构:ndarray对象62

5.1.1 通过array方法创建ndarray62

5.1.2 ndarray的dtype属性63

5.1.3 创建全0或全1的ndarray64

5.2 NumPy库的常用操作65

5.2.1 通过arange方法创建序列数组65

5.2.2 针对ndarray的数学运算66

5.2.3 常用的科学计算函数67

5.2.4 常用的聚合统计函数68

5.2.5 遍历ndarray数组69

5.3 针对ndarray的索引和切片操作69

5.3.1 索引操作69

5.3.2 布尔索引与条件过滤70

5.3.3 切片操作与共享内存70

5.3.4 通过copy函数创建副本72

5.4 本章小结72

第6章 Pandas数据清洗73

6.1 以一维方式存储数据的Series对象73

6.1.1 Series的常规操作74

6.1.2 创建并使用Series索引75

6.1.3 获取Series里的切片数据76

6.1.4 通过布尔Series获取满足条件的元素78

6.1.5 遍历Series数据78

6.2 以表格格式存储数据的DataFrame对象79

6.2.1 DataFrame对象的常规用法79

6.2.2 通过loc、iloc和ix提取数据81

6.2.3 遍历DataFrame里的数据82

6.3 面向DataFrame的常用数据分析方法82

6.3.1 对DataFrame数据进行排序83

6.3.2 以列为单位进行运算83

6.3.3 增加和删除列84

6.3.4 过滤和重设数据85

6.3.5 在DataFrame中进行数据统计分析85

6.3.6 衡量变量间关联程度的corr方法86

6.4 Pandas与各类文件的交互87

6.4.1 DataFrame数据与csv文件的相互转换87

6.4.2 NaN与缺失值处理89

6.4.3 DataFrame数据与Excel文件的相互转换90

6.4.4 DataFrame数据与json文件的相互转换91

6.5 本章小结92

第7章 Matplotlib数据可视化93

7.1 通过Matplotlib绘制各类图形93

7.1.1 绘制折线图93

7.1.2 绘图时的通用属性参数94

7.1.3 绘制柱状图95

7.1.4 绘制饼图97

7.1.5 绘制直方图98

7.2 设置坐标的技巧99

7.2.1 设置x和y坐标标签文字并展示中文99

7.2.2 设置坐标的范围100

7.2.3 设置坐标的主刻度和次刻度101

7.2.4 设置并旋转坐标刻度文字102

7.3 增加可视化美观效果103

7.3.1 设置图例104

7.3.2 设置中文标题105

7.3.3 设置网格效果106

7.4 设置多图和子图效果107

7.4.1 通过figure对象同时绘制多张图107

7.4.2 通过add_subplot方法绘制子图108

7.4.3 通过subplot方法绘制子图109

7.4.4 子图共享x坐标轴110

7.4.5 在大图里绘制子图112

7.5 绘制高级图表113

7.5.1 绘制散点图113

7.5.2 绘制热图114

7.5.3 绘制等值线图115

7.6 通过mplot3d绘制三维图形116

7.6.1 绘制三维曲线图116

7.6.2 绘制三维散点图117

7.6.3 绘制三维柱状图118

7.7 本章小结119

第8章 通过网络爬虫获取数据120

8.1 和爬虫有关的HTTP120

8.1.1 基于HTTP的请求处理流程120

8.1.2 HTTP请求头包含操作系统和浏览器信息122

8.1.3 Post和Get请求方法122

8.1.4 HTTP常见的状态码122

8.2 通过Urllib库获取网页信息123

8.2.1 通过request爬取网页123

8.2.2 设置超时时间124

8.2.3 用URLError处理网络异常124

8.2.4 设置header属性来模拟浏览器发送请求125

8.3 通过BeautifulSoup提取页面信息125

8.3.1 安装BeautifulSoup库125

8.3.2 用Tag提取HTML元素和属性126

8.3.3 用NavigableString提取元素值127

8.3.4 用Comment提取注释127

8.3.5 制定规则搜索指定的内容128

8.4 通过正则表达式截取信息130

8.4.1 查找指定字符串130

8.4.2 用通用字符来模糊匹配130

8.4.3 通过原子表来定义匹配规则131

8.4.4 用findall按匹配规则截取内容132

8.5 用Scrapy爬取博客园文章信息134

8.5.1 通过Scrapy命令创建爬虫项目134

8.5.2 明确爬取目标,制定爬取规则134

8.5.3 在Item模块里定义数据模型136

8.5.4 生成爬虫文件,定义爬取动作136

8.5.5 在pipelines文件里定义数据存储方式137

8.5.6 启动爬虫程序,观察运行效果138

8.6 本章小结139

第9章 数据分析的常用方法140

9.1 准备并存储数据140

9.1.1 用Pandas_datareader库获取数据140

9.1.2 以csv和Excel格式存储数据141

9.1.3 准备MySQL环境142

9.1.4 在MySQL里存储数据142

9.1.5 从数据表里读取数据145

9.2 描述性统计146

9.2.1 平均数、中位数和百分位数146

9.2.2 用箱状图展示分位数147

9.2.3 统计极差、方差和标准差148

9.3 基于时间序列的统计方法148

9.3.1 用rolling方法计算移动平均值148

9.3.2 基于时间序列的自相关性分析149

9.3.3 基于时间序列的偏自相关性分析151

9.3.4 用热力图分析不同时间序列的相关性152

9.4 概率分析方法与推断统计154

9.4.1 分析收盘价,绘制小提琴图154

9.4.2 用直方图来拟合正态分布效果155

9.4.3 验证序列是否满足正态分布156

9.4.4 参数估计方法157

9.4.5 显著性验证158

9.5 回归分析方法159

9.5.1 构建一元线性回归模型159

9.5.2 以多元线性回归模型预测股价162

9.6 本章小结164

第10章 案例:图书信息的爬取、数据清洗与分词处理165

10.1 用Scrapy框架爬取豆瓣网编程图书165

10.1.1 准备知识:yield的含义165

10.1.2 明确待爬取的目标,创建Scrapy项目166

10.1.3 定义图书的数据模型167

10.1.4 分析页面结构,实现爬虫功能167

10.1.5 存为csv文件171

10.1.6 运行爬虫,观察结果172

10.2 分析图书数据,绘制可视化图表172

10.2.1 用Pandas库的方法清洗数据172

10.2.2 出版社出书情况分析173

10.2.3 评论数最多和最贵的3本图书175

10.2.4 用直方图绘制评分频次177

10.2.5 对书名分词,绘制词云178

10.3 本章小结179

第11章 案例:二手房数据的爬取、清洗与可视化180

11.1 用Scrapy框架爬取二手房数据180

11.1.1 明确爬取目标,创建Scrapy项目180

11.1.2 定义二手房数据模型181

11.1.3 分析页面结构,实现爬虫功能181

11.1.4 定义pipelines逻辑,把数据存为json文件185

11.1.5 运行爬虫程序,把数据存为json格式186

11.2 分析二手房数据186

11.2.1 清洗数据186

11.2.2 对数据进行基本的分析187

11.2.3 观察均价和总价的分布情况189

11.2.4 用散点图展示关注度与价格、面积的关系190

11.2.5 绘制关于二手房标题和地段的词云192

11.3 本章小结194

第12章 案例:股票数据分析与可视化195

12.1 股市指标的分析与可视化195

12.1.1 准备股票交易数据195

12.1.2 用Matplotlib绘制K线图196

12.1.3 用rolling和mean绘制均线198

12.1.4 用柱状图描述成交量199

12.1.5 加工DataFrame数据,绘制MACD图201

12.1.6 绘制CCI图,进一步熟悉DataFrame204

12.2 验证常见的股市交易策略206

12.2.1 验证基于长短均线的交易策略207

12.2.2 验证基于MACD指标的交易策略209

12.2.3 验证基于CCI的交易策略211

12.3 绘制价格通道212

12.3.1 计算并绘制唐奇安通道213

12.3.2 计算并绘制布林带通道214

12.3.3 计算并绘制鳄鱼组线216

12.4 用机器学习方法预测股票219

12.4.1 用Lasso和岭回归拟合预测收盘价219

12.4.2 用SVM和KNN模型预测涨跌221

12.5 本章小结224

第13章 基于机器学习算法的数据分析225

13.1 数据集与机器学习的基础知识225

13.1.1 获取sklearn提供的数据集225

13.1.2 训练集、验证集和测试集226

13.2 一元和多元线性回归案例227

13.2.1 波士顿房价数据集的初步分析227

13.2.2 构建波士顿房价的多元线性关系230

13.2.3 交叉验证的思想及其实现231

13.3 岭回归、Lasso回归及案例233

13.3.1 对比线性回归和岭回归233

13.3.2 基于岭回归拟合波士顿房价235

13.3.3 Lasso回归236

13.4 分类算法案例237

13.4.1 基于线性和高斯内核的SVM分类器238

13.4.2 用SVM分类器划分鸢尾花240

13.4.3 基于KNN算法的分类器243

13.4.4 KNN分类器对酒的分类244

13.4.5 基于逻辑回归的分类方法245

13.4.6 用逻辑回归划分鸢尾花246

13.5 基于手写体数字识别的分类案例248

13.5.1 观察Digits数据集248

13.5.2 以训练集和测试集的方式评估结果249

13.5.3 对比分类模型的预测和真实结果250

13.6 本章小结252

### 安居客出租房(武汉为例)爬虫+数据分析+可视化 这个爬虫是我前段时间在淘宝上做单子的时候遇见的一个客户需求。本来以为就是一个简单的爬虫项目。但后面客户加了数据清洗和数据分析的要求。而后又加了要详细代码解释的需求等等。直到最后客户坦白说这是他们大专的毕设.......但是这个单子坐下来只有200左右,我想了一下,感觉好亏啊。在淘宝上随便找一个做毕设的都要好多钱的,而且客户本身的代码能力、数学、逻辑能力都很差,导致我每行都给注释以及看不懂,在我交付代码后又纠缠了我一个多礼拜。反正总体做下来的感觉就是烦躁。头一次感觉到了客户需求变更带来的巨大麻烦。 总之这是一次不是很愉快的爬虫经历。但是作为我写爬虫以来注释最详细的一次,以及第一次真正使用像matplotlib这种数据分析库的代码,我认为还是有必要分享出来给大家当个参考的(PS:大佬轻拍~)。爬虫本身几乎没有什么难度,写的也比较乱,敬请见谅。 **功能** 爬取安居客上的出租房信息(武汉地区的),并通过爬取的数据进行数据清洗以及数据分析。给出四个不同层面的可视化图。最终结果如下图所示: ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/1.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/2.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/3.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/4.png) **环境** 1. Windows 10 2. python3.7 **使用方法** 首先声明该爬虫由于是特定情况下写的,所以本身的通用性特别差,仅可以对安居客网站上的武汉的出租房信息进行爬取,且需要自己手动更新cookie。同时在对数据进行分析可视化的时候由于也是特别针对武汉出租房的进行的,所以针对性也比较强。如果别的需求需要自己进行更改。 1. 访问[安居客网址](https://wuhan.anjuke.com/),获取cookie。 > tip:获取cookie的方法可根据[此链接](https://jingyan.baidu.com/article/5d368d1ea6c6e33f60c057ef.html) 2. 在项目中找到`spider.py`的文件,将第12行的cookie换你自己的cookie。 3. 运行`spider.py`,获取房源信息。运行后应会产生一个`武汉出租房源情况.csv`的文件。此文件为我们从安居客爬取的房源信息,其中包含`房屋租住链接、房屋描述、房屋地址、房屋详情(户型)以及经纪人、房屋价格`五个属性。 4. 在获取了数据之后我们运行`matplotlib.py`文件。进行数据清洗,分析可视化。运行后即可获得**功能**中展示四个图片。 **技术栈** 1. request 2. parsel 3. pandas 4. matplotlib **进步(相比之前)** 此次爬虫相比之前的技术上可以说有减无增。但其中注释相当详细,可谓是每行代码都有注释。所以对于初学者应该有一些用处。同时使用matplotlib进行了数据分析可视化等。对于数据处理的代码的注释也是几乎每行都有注释的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值