全书共13章。第1~4章为基础篇,主要讲述Python基础知识、Python数据结构、面向对象程序设计思想,Python异常处理和读写文件的技巧;第5~7章为数据分析的工具篇,主要讲述Numpy库、Pandas库和Matplotlib库的基本功能和应用;第8章和第9章为“数据分析高级技能篇”,主要讲述通过爬取技术博客案例、基于Scrapy爬虫框架的实用技巧、数据分析的常用方法,如Python连接操作数据库的相关技能,基于时间序列、概率分析、推断统计和回归分析方法的数学分析方法;第10~13章为“综合案例篇”,主要讲述二手房数据分析案例、股票数据分析案例以及基于Sklearn库的机器学习相关实践。
封面图
目录
- 前言
- 第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