本书采用理论与案例相结合的形式,以Anaconda为主要开发工具,系统、全面地介绍了Python数据分析的相关知识。全书共分为9章,第1章介绍了数据分析的基本概念,以及开发工具的安装和使用;第2~6章介绍了Python数据分析的常用库及其应用,涵盖了科学计算库NumPy、数据分析库Pandas、数据可视化库Matplotlib、Seaborn与Bokeh;第7、8章主要介绍了时间序列和文本数据的分析;第9章结合之前所学的技术开发了一个综合案例,演示如何在项目中运用所学的知识。除了第1章外,其他章节都包含了很多示例和综合案例,通过动手操作和练习,可以帮助读者更好地理解和掌握所学的知识。本书适合作为高等院校计算机相关专业的大数据技术类课程教材,也可以作为大数据技术爱好者入门用书。
(1)本书采用理论与案例相结合的形式,以 Anaconda 为主要开发工具,系统、全面地介绍了 Python 数据分析的相关知识。(2)zui后一章为综合案例,演示如何在项目中运用所学的知识。
随着大数据时代的到来,数据已经成为与物质资产和人力资本同样重要的基础生产要素,如何从数据里面发现并挖掘有价值的信息成为一个热门的研究课题。基于这种需求,数据分析技术应运而生。数据分析是有目的地收集、整理、加工和分析数据,提炼出有价值信息的一个过程,它可以帮助企业或个人预测未来趋势和行为,规避风险,使得商务和生产活动具有前瞻性。Python在数据分析、探索性计算、数据可视化等方面都有非常成熟的库和活跃的社区,从21世纪开始,在行业应用和学术研究中使用Python进行数据分析的势头越来越猛,对于要往数据分析方向发展的读者而言,学习Python数据分析是一个不错的选择。本书站在初学者的角度,循序渐进地介绍了学习数据分析必备的基础知识,以及一些比较优秀的数据分析工具,帮助读者具备数据分析的相关技能,能够独立编写项目,以胜任Python数据分析工程师相关岗位的工作。本书在讲解时,采用需求引入的方式,循序渐进地介绍了数据分析工具的基本使用,同时对一些比较特殊的时间序列和文本数据的分析进行了拓展讲解,提高了读者的开发兴趣和开发能力。作为开发人员,要想真正掌握一门技术,离不开多动手练习,所以本书在绘声绘色讲解知识的同时,不断地增加案例,有针对某个知识点的示例程序,也有针对某章的案例,zui大程度地帮助读者真正掌握Python数据分析的核心技术。本书基于Python 3,系统全面地讲解了Python数据分析的基础知识,全书共9章,具体章节内容如下。第1章主要是带领大家了解数据分析,包括数据分析产生背景、什么是数据分析、数据分析的应用场景、数据分析的流程、开发工具的基本使用及常见数据分析工具等。通过本章的学习,希望大家能够对数据分析有一个初步的认识,并为后续章节的学习准备好开发环境。第2章主要针对科学计算库NumPy进行讲解,包括创建数组、数据类型、数组运算、索引和切片操作、转置和轴对称、通用函数、使用数组处理数据、线性代数模块及随机数模块等,并结合酒鬼漫步的案例,讲解如何使用NumPy数组参与简单的运算。希望读者能熟练使用NumPy包,为后面章节的学习奠定基础。第3章主要介绍Pandas的基础功能,包括数据结构分析、索引操作、算术运算与数据对齐、数据排序、统计计算与描述、层次化索引和读写操作,并结合北京高考分数线的分析案例,讲解如何使用Pandas操作数据。通过对本章的学习,希望大家可以用Pandas实现简单的操作,为后续深入学习打好扎实的基础。第4章进一步介绍了Pandas的数据预处理,包括数据清洗、数据合并、数据重塑和数据转换,并结合预处理部分地区信息的案例,讲解了如何利用Pandas预处理数据。数据预处理是数据分析中必不可少的环节,希望大家要多加练习,并能够在实际场景中选择合理的方式对数据进行预处理操作,另外,还可以参考官网提供的文档深入学习。第5章继续介绍了Pandas的聚合与分组运算,包括分组聚合的原理、分组操作、数据聚合及其他分组级运算,并结合运动员基本信息的案例,讲解如何在项目中应用分组与聚合运算。大家在学习与理解的同时,要多加练习,可根据具体情况选择合理的技术进行运用即可。第6章主要介绍了几个数据可视化工具,包括Python 2D绘图库Matplotlib、绘制统计数据的库Seaborn和交互式可视化的库Bokeh,并结合某年旅游景点的案例,讲解如何使用Matplotlib库绘制图表辅助分析。希望通过本章的学习,读者可以体会到在数据分析中运用可视化工具的好处。第7章围绕着时间序列数据分析进行了介绍,包括创建时间序列、时间序列的索引和切片操作、固定频率的时间序列、时间周期与计算、重采样、滑动窗口及时序模型ARIMA,并结合预测股票收盘价的案例,讲解了在项目中如何用时序模型对时间序列数据进行预测分析。通过对本章内容的学习,读者应该掌握处理时间序列数据的一些技巧,并灵活加以运用。第8章主要针对文本数据分析进行讲解,包括文本数据分析的工具、文本预处理、文本情感分析、文本相似度和文本分类,并结合商品评价分析的案例,讲解了如何利用NLTK与jieba预处理和分析文本数据。希望通过对本章知识的学习,读者可以理解文本数据分析的原理,以便后续能基于机器学习更深入地去探索。第9章是一个完整的实战项目,用于统计分析当前北京租房的信息,包括数据收集、预处理数据、数据分析,以及利用图表展现数据。希望通过对本章的学习,读者能够灵活地运用数据分析的技术,具备开发简单项目的能力。在学习过程中,读者一定要亲自实践本书中的案例代码。如果不能完全理解书中所讲知识,读者可以登录博学谷平台,通过平台中的教学视频进行深入学习。学习完一个知识点后,要及时在博学谷平台上进行测试,以巩固学习内容。另外,如果读者在理解知识点的过程中遇到困难,建议不要纠结于某个地方,可以先往后学习。通常来讲,通过逐渐深入的学习,前面不懂和疑惑的知识点也就能够理解了。在学习编程的过程中,一定要多动手实践,如果在实践的过程中遇到问题,建议多思考,理清思路,认真分析问题发生的原因,并在问题解决后总结出经验。本书的编写和整理工作由传智播客教育科技股份有限公司完成,主要参与人员有吕春林、高美云、王晓娟、孙东等。全体人员在近一年的编写过程中付出了很多辛勤的汗水,在此一并表示衷心的感谢。尽管我们付出了zui大的努力,但书中难免会有不妥之处,欢迎各界专家和读者朋友们来信给予宝贵意见,我们将不胜感激。您在阅读本书时,如发现任何问题或有不认同之处,可以通过电子邮件与我们取得联系。请发送电子邮件至:itcast_book@vip.sina.com。黑马程序员2018年11月12日于北京
江苏传智播客教育科技股份有限公司(简称传智播客)是一家专门致力于高素质软件开发人才培养的高科技公司。“黑马程序员”是传智播客旗下高端IT教育品牌。
第1章 数据分析概述 11.1 数据分析的背景 11.2 什么是数据分析 21.3 数据分析的应用场景 21.4 数据分析的流程 31.5 为什么选择Python做数据分析 41.6 创建新的Python环境——Anaconda 51.6.1 Anaconda发行版本概述 51.6.2 在Windows系统中安装Anaconda 51.6.3 通过Anaconda管理Python包 71.7 启用Jupyter Notebook 91.7.1 启动Anaconda自带的Jupyter Notebook 91.7.2 Jupyter Notebook界面详解 101.7.3 Jupyter Notebook的基本使用 131.8 常见的数据分析工具 16小结 17习题 17第2章 科学计算库NumPy 192.1 认识NumPy数组对象 192.2 创建NumPy数组 212.3 ndarray对象的数据类型 222.3.1 查看数据类型 222.3.2 转换数据类型 232.4 数组运算 242.4.1 矢量化运算 242.4.2 数组广播 252.4.3 数组与标量间的运算 252.5 ndarray的索引和切片 262.5.1 整数索引和切片的基本使用 262.5.2 花式(数组)索引的基本使用 282.5.3 布尔型索引的基本使用 292.6 数组的转置和轴对称 302.7 NumPy通用函数 322.8 利用NumPy数组进行数据处理 342.8.1 将条件逻辑转为数组运算 342.8.2 数组统计运算 342.8.3 数组排序 352.8.4 检索数组元素 362.8.5 唯一化及其他集合逻辑 362.9 线性代数模块 372.10 随机数模块 382.11 案例——酒鬼漫步 39小结 40习题 40第3章 数据分析工具Pandas 423.1 Pandas的数据结构分析 423.1.1 Series 423.1.2 DataFrame 443.2 Pandas索引操作及高级索引 463.2.1 索引对象 463.2.2 重置索引 473.2.3 索引操作 493.3 算术运算与数据对齐 533.4 数据排序 543.4.1 按索引排序 543.4.2 按值排序 553.5 统计计算与描述 563.5.1 常用的统计计算 573.5.2 统计描述 583.6 层次化索引 593.6.1 认识层次化索引 593.6.2 层次化索引的操作 643.7 读写数据操作 683.7.1 读写文本文件 683.7.2 读写Excel文件 703.7.3 读取HTML表格数据 723.7.4 读写数据库 733.8 案例——北京高考分数线统计分析 772.8.1 案例需求 772.8.2 数据准备 772.8.3 功能实现 78小结 81习题 81第4章 数据预处理 834.1 数据清洗 834.1.1 空值和缺失值的处理 834.1.2 重复值的处理 884.1.3 异常值的处理 904.1.4 更改数据类型 944.2 数据合并 964.2.1 轴向堆叠数据 964.2.2 主键合并数据 994.2.3 根据行索引合并数据 1034.2.4 合并重叠数据 1054.3 数据重塑 1064.3.1 重塑层次化索引 1064.3.2 轴向旋转 1094.4 数据转换 1104.4.1 重命名轴索引 1104.4.2 离散化连续数据 1124.4.3 哑变量处理类别型数据 1134.5 案例——预处理部分地区信息 1154.5.1 案例需求 1154.5.2 数据准备 1154.5.3 功能实现 116小结 123习题 123第5章 数据聚合与分组运算 1255.1 分组与聚合的原理 1255.2 通过groupby()方法将数据拆分成组 1265.3 数据聚合 1325.3.1 使用内置统计方法聚合数据 1325.3.2 面向列的聚合方法 1325.4 分组级运算 1365.4.1 数据转换 1365.4.2 数据应用 1385.5 案例——运动员信息的分组与聚合 1415.5.1 案例需求 1415.5.2 数据准备 1415.5.3 功能实现 142小结 146习题 147第6章 数据可视化 1496.1 数据可视化概述 1496.1.1 什么是数据可视化 1496.1.2 常见的图表类型 1506.1.3 数据可视化的工具 1546.2 Matplotlib——绘制图表 1556.2.1 通过figure()函数创建画布 1556.2.2 通过subplot()函数创建单个子图 1576.2.3 通过subplots()函数创建多个子图 1586.2.4 通过add_subplot()方法添加和选中子图 1606.2.5 添加各类标签 1616.2.6 绘制常见图表 1626.2.7 本地保存图形 1676.3 Seaborn——绘制统计图形 1686.3.1 可视化数据的分布 1686.3.2 用分类数据绘图 1746.4 Bokeh——交互式可视化库 1786.4.1 认识Bokeh库 1786.4.2 通过Plotting绘制图形 1796.5 案例——画图分析某年旅游景点数据 1806.5.1 案例需求 1816.5.2 数据准备 1816.5.3 功能实现 181小结 185习题 185第7章 时间序列分析 1877.1 时间序列的基本操作 1877.1.1 创建时间序列 1877.1.2 通过时间戳索引选取子集 1897.2 固定频率的时间序列 1917.2.1 创建固定频率的时间序列 1917.2.2 时间序列的频率、偏移量 1937.2.3 时间序列的移动 1957.3 时间周期及计算 1967.3.1 创建时期对象 1967.3.2 时期的频率转换 1987.4 重采样 1987.4.1 重采样方法(resample) 1997.4.2 降采样 2007.4.3 升采样 2017.5 数据统计——滑动窗口 2037.6 时序模型——ARIMA 2067.7 案例——股票收盘价分析 2077.7.1 案例需求 2077.7.2 数据准备 2077.7.3 功能实现 208小结 213习题 214第8章 文本数据分析 2168.1 文本数据分析工具 2168.1.1 NLTK与jieba概述 2168.1.2 安装NLTK和下载语料库 2178.1.3 jieba库的安装 2198.2 文本预处理 2208.2.1 预处理的流程 2208.2.2 分词 2218.2.3 词性标注 2238.2.4 词形归一化 2248.2.5 删除停用词 2268.3 文本情感分析 2278.4 文本相似度 2298.5 文本分类 2328.6 案例——商品评价分析 2358.6.1 案例需求 2358.6.2 数据准备 2368.6.3 功能实现 236小结 240习题 240第9章 数据分析实战——北京租房数据统计分析 2429.1 数据来源 2429.2 数据读取 2439.3 数据预处理 2449.3.1 重复值和空值处理 2449.3.2 数据转换类型 2469.4 图表分析 2479.4.1 房源数量、位置分布分析 2489.4.2 户型数量分析 2559.4.3 平均租金分析 2589.4.4 面积区间分析 260小结 262