《Python数据分析与数据化运营》第二版 老代码与新代码对照信息
“本文汇总了数据分析书籍2019版与最新版之间的代码差异及修复方案。重点梳理了因Python和R语言主流依赖库升级导致的语法变更,包括sklearn模块路径与评估指标调整、imblearn抽样函数更名、pyecharts图表重构、xlrd格式支持缩减,以及MySQL批量写库优化等,为解决方法弃用与报错问题提供标准参考。”
第二版书籍代码更新与差异汇总(2019 版 vs 最新版)
由于第二版是 2019 年出版,某些库或方法可能已经过时,在此汇总新版本和之前书中的老版本的差异,供大家了解。
💡 排错指南:在遇到类似于“没有找到方法”、“无法找到库”、“不存在”等类似问题时,可先在这里查看下是否存在现成的解决方案。
更新时间:2021-06-12
第一章
1.1 销售预测应用代码更新
第一章最后的“销售预测应用”部分中的代码需要更新,新版本中预测方法的输入参数格式发生了变化。
原始代码(老版本):
python
新版本代码:
python
第二章
2.1 从 Excel 获取运营数据
在“2.2.2 从 Excel 获取运营数据”中,最新版本的 xlrd 已经不支持除了 .xls 以外的其他格式(功能有所缩减),因此使用方法发生变化。
原始代码(老版本支持 xlsx):
python
新版本代码(仅支持 xls):
python
第三章
3.1 数据清洗:缺失值处理库的变更
在“3.1 数据清洗:缺失值、异常值和重复值的处理”的“1. 缺失值处理”中,缺失值处理库的导入方法和名称均已发生变化。
1. 导入库的变化
原始版本代码:
python
新版本代码:
python
2. 使用 sklearn 将缺失值替换为特定值
原始版本代码:
python
新版本代码:
python
3.2 解决样本类别分布不均衡问题
在“3.4 解决样本类别分布不均衡的问题”中,imblearn 库的抽样方法名称发生了变化,统一将 fit_sample 更改为 fit_resample。
1. 使用 SMOTE 方法进行过抽样处理
原始版本代码:
python
新版本代码:
python
2. 使用 RandomUnderSampler 方法进行欠抽样处理
原始版本代码:
python
新版本代码:
python
第四章
4.1 KMeans 的评估方法更新
在 KMeans 的评估方法中,新版本的 sklearn 已经去掉了 calinski_harabaz_score 方法。
1. 导入库的变化
原始版本代码:
python
新版本代码:
python
2. 模型效果指标评估
原始版本代码:
python
新版本代码:
python
4.2 回归分析:GradientBoostingRegressor 导入路径变化
在“4.2 回归分析-案例:大型促销活动前的销售预测”中,GradientBoostingRegressor 的导入来源库发生变化。
原始版本代码:
python
新版本代码:
python
4.3 分类分析:SMOTE 调用方法变化
在“4.3 分类分析-案例:用户流失预测分析与应用”的“数据预处理”中,SMOTE 的调用方法由 fit_sample 变更为 fit_resample。
原始版本代码:
python
新版本代码:
python
4.4 关联分析:pyecharts 库与 R 语言版本更新
在“4.4 关联分析”中,利用 Echarts 展示商品关联结果图时,由于 pyecharts 存在 v0.5 和 v1 两个互不兼容的版本,因此代码有较大差异。
1. 导入库的变化
原始版本代码:
python
新版本代码:
python
2. 创建关系图的变化
原始版本代码:
python
新版本代码:
python
3. R 语言版本升级说明
调用的 R 版本使用了最新的 R 4.1.0。其中涉及到的 R 部分代码略微做了修改,主要增加了判断库是否存在,如果不存在则自动安装的功能。具体代码如下:
r
4.5 时间序列分析:R 版本升级
“4.6 时间序列分析”中的 R 版本升级为最新的 R 4.1.0。经过测试,所有代码保持不变。
第五章
5.1 基于 RFM 的精细化用户管理:Bar3D 库更新
在“案例-基于 RFM 的精细化用户管理”中,Bar3D 库的导入和使用在原书 v0.5 和目前的 v1 版本中发生变化。
1. 导入库的变化
原始版本代码:
python
新版本代码:
python
2. RFM 图形展示的变化
原始版本代码:
python
新版本代码:
python
5.2 基于 RFM 的精细化用户管理:MySQL 写库方法改进
原书中的 MySQL 写库采用的是单条写库的方法,原始代码将 commit 放到 for 循环中,导致每次循环时都需要提交,效率极低:
python
为了提升速度,若仍使用单条写库操作,需要将 commit 放到 for 循环外面,即多次执行后一次性提交:
python
最终优化方案:单条写库面对大量数据时仍然很慢,因此新版本改成了批量写库的方法,新代码具体为:
python
5.3 营销响应预测:SMOTE 样本均衡使用方法变化
在“案例-基于嵌套 Pipeline 和 FeatureUnion 复合数据工作流的营销响应预测”中,样本均衡的 SMOTE 使用方法发生变化。
原始版本代码:
python
新版本代码:
python
第六章
6.1 投票组合模型的异常检测:SMOTE 应用方法变化
在“案例-基于集成算法 AdaBoost、GradientBoosting、RandomForest 和 Bagging 的投票组合模型的异常检测”中,样本均衡 SMOTE 应用方法发生变化。
原始版本代码:
python
新版本代码:
python
6.2 投票组合模型的异常检测:StratifiedKFold 参数变化
在同案例中,StratifiedKFold 模型交叉检验参数应用方法发生变化。
原始版本代码:
python
新版本代码:
python
第七章
7.1 KMeans 广告效果聚类分析:雷达图 label 封装
在“案例-基于自动 K 值的 KMeans 广告效果聚类分析”最后输出雷达图时,新版本的 matplotlib.pyplot 需要额外对 label 做封闭处理。
原始版本代码:
python
新版本代码:
python