数据分析与可视化在大数据时代扮演着重要角色。数据分析用于将原始数据转化为可行的见解,可视化能将关键数据和特征直观地表达出来。本书深入浅出地介绍了数据分析与可视化的相关理论和实践,全书共7章。第1章阐明NumPy的基础操作。第2章详细介绍NumPy的高级应用,内容包括数组的高级索引方式、张量的合并与分割、NumPy文件的读与写。第3章介绍Pandas的基本特性。第4章详细阐述Pandas的高级特性。第5章详细讨论可视化工具Matplotlib的用法。第6章介绍高阶可视化工具Seaborn的用法。第7章讲解时间序列数据的处理。每个章节均给出了可用性强的实战项目。本书结构完整、行文流畅,是一本图文并茂、通俗易懂的数据分析与可视化的零基础入门著作。对于计算机、大数据、人工智能及相关专业的本科生和研究生,这是一本适合入门与系统学习的教材;对于从事数据分析与可视化的工程技术人员,本书亦有很高的参考价值。
张玉宏,2012年博士毕业于电子科技大学,大数据分析师(高级),2009年~2011年美国西北大学访问学者,2019年~至今,美国IUPUI高级访问学者,现执教于河南工业大学,主要研究方向为大数据、机器学习等,发表学术论文30余篇,阿里云栖社区专栏科技作家,先后出版《深度学习之美》《品味大数据》等科技畅销书6部,参编英文学术专著2部。
目 录
第1章 NumPy数值计算基础 001
1.1 为何还需NumPy 002
1.2 如何安装和导入NumPy 002
1.3 N维数组的本质 003
1.3.1 NumPy数组的两种视图 004
1.3.2 数组的常用属性 004
1.4 如何生成NumPy数组 008
1.4.1 利用序列生成 008
1.4.2 利用特定方法生成 009
1.4.3 利用其他常用方法 011
1.5 NumPy中的随机数生成 014
1.6 NumPy数组中的运算 016
1.6.1 向量运算 016
1.6.2 NumPy中的通用函数 017
1.6.3 逐元素运算与点乘运算 019
1.6.4 向量的内积与矩阵乘法 020
1.7 NumPy中的广播机制 022
1.7.1 广播的本质 022
1.7.2 “低维有1”情况下的广播 023
1.7.3 “后缘相符”情况下的广播 023
1.7.4 “后缘不符但低维有1”情况下的广播 024
1.8 NumPy中的轴 026
1.8.1 认识轴的概念 026
1.8.2 基于轴的约减操作 027
1.8.3 基于轴的各种运算 028
1.9 操作数组元素 031
1.9.1 通过索引访问数组元素 031
1.9.2 NumPy中的切片访问 033
1.9.3 二维数组的转置与展平 035
1.10 实战:张量思维的养成——利用NumPy计算π 038
1.11 本章小结 042
1.12 思考与提高 042
第2章 NumPy数值计算进阶 044
2.1 NumPy数组的高级索引 045
2.1.1 花式索引 045
2.1.2 好用的布尔索引 050
2.2 张量的堆叠操作与分割 051
2.2.1 水平方向堆叠hstack 052
2.2.2 垂直方向堆叠vstack 053
2.2.3 深度方向堆叠dstack 054
2.2.4 张量的分割操作 056
2.3 NumPy张量的升维与降维 062
2.4 数据的去重与铺叠 064
2.4.1 用unique去重 065
2.4.2 用tile铺叠数据 068
2.5 张量的排序 071
2.5.1 数值排序 071
2.5.2 按列名(order)排序 073
2.5.3 多序列排序(lexsort) 076
2.5.4 索引排序(argsort) 078
2.5.5 索引最大值(argmax)与最小值(argmin) 080
2.6 常用的统计方法 081
2.6.1 最大值、最小值与极值区间 082
2.6.2 均值、中位数、百分数与方差 083
2.6.3 众数与堆统计 084
2.7 NumPy文件的读与写 086
2.7.1 二进制文件的读与写 087
2.7.2 文本文件的读与写 090
2.7.3 CSV文件的读与写 091
2.8 基于NumPy的综合实践 093
2.8.1 鸢尾花数据集的统计分析 093
2.8.2 电力负荷数据的处理 097
2.9 本章小结 100
2.10 思考与练习 101
第3章 Pandas数据分析初步 102
3.1 Pandas简介与安装 103
3.2 Series类型数据 104
3.2.1 Series的创建 104
3.2.2 索引访问与重建索引 106
3.2.3 通过字典构建Series 109
3.2.4 Series中数据的选择 110
3.2.5 向量化操作 112
3.2.6 布尔索引 114
3.2.7 切片访问 114
3.2.8 数值的删除 115
3.2.9 数值的添加 117
3.3 DataFrame 类型数据 119
3.3.1 构建DataFrame 120
3.3.2 访问DataFrame中的列与行 122
3.3.3 DataFrame的删除操作 128
3.3.4 添加行与列 130
3.4 基于Pandas的文件读取与分析 135
3.4.1 读取CSV文件——以工资信息表为例 136
3.4.2 DataFrame中的常用属性 137
3.4.3 DataFrame中的常用方法 138
3.4.4 DataFrame的条件过滤 141
3.4.5 DataFrame的切片操作 143
3.4.6 DataFrame的排序操作 145
3.5 实战:读取Excel文件——以电力负荷数据为例 146
3.5.1 数据源参数 147
3.5.2 特定表单参数 147
3.5.3 表头读数 150
3.5.4 表头名称参数 151
3.5.5 索引列参数 152
3.5.6 解析列参数 152
3.5.7 数据转换参数 153
3.6 本章小结 153
3.7 思考与练习 154
第4章 Pandas数据预处理与深加工 156
4.1 数据清洗 157
4.1.1 缺失值标记与检测 157
4.1.2 检测形式各异的缺失值 159
4.1.3 缺失值的删除 161
4.1.4 缺失值的填充 163
4.2 数据的标准化 168
4.2.1 MAX-MIN归一化 168
4.2.2 零均值标准化 171
4.3 数据变换与数据离散化 172
4.3.1 类别型数据的哑变量处理 172
4.3.2 连续型变量的离散化 174
4.4 函数的映射与应用 178
4.4.1 map函数的使用 178
4.4.2 apply函数的使用 183
4.4.3 applymap函数的使用 188
4.5 索引的高阶应用 189
4.5.1 重建索引 189
4.5.2 设置索引 190
4.5.3 重置索引 193
4.5.4 分层索引 195
4.5.5 实战:《指环王》台词数量分析 201
4.6 数据的融合与堆叠 205
4.6.1 merge按键数据融合 205
4.6.2 concat按轴堆叠数据 210
4.6.3 append数据项追加 214
4.7 数据的聚合和分组操作 215
4.7.1 聚合操作 216
4.7.2 分组与聚合 217
4.7.3 分组与转换 220
4.8 数据重塑与透视 224
4.8.1 数据重塑 224
4.8.2 数据透视 228
4.8.3 实战:《指环王》中的透视表 230
4.9 实战:泰坦尼克幸存者数据预处理分析 234
4.9.1 数据简介 234
4.9.2 数据探索 236
4.9.3 缺失值处理 238
4.10 本章小结 241
4.11 思考与练习 242
第5章 Matplotlib可视化分析 244
5.1 可视化与Matplot 245
5.2 Matplot绘制简单图形 246
5.3 pyplot的常用方法 249
5.3.1 添加图例与注释 249
5.3.2 设置(中文)标题及坐标轴 251
5.3.3 添加网格线 256
5.3.4 绘制多个子图 257
5.3.5 Axes与subplot的区别 259
5.3.6 图形的填充 265
5.4 折线图 268
5.5 散点图 270
5.6 条形图与直方图 271
5.6.1 垂直条形图 271
5.6.2 水平条形图 273
5.6.3 并列条形图 274
5.6.4 直方图 278
5.7 饼状图 281
5.8 箱形图 283
5.9 误差条 285
5.10 实战:谷歌流感趋势数据可视化分析 287
5.10.1 谷歌流感趋势数据描述 287
5.10.2 导入数据与数据预处理 288
5.10.3 绘制时序曲线图 291
5.10.4 选择合适的数据可视化表达 293
5.10.5 基于条件判断的图形绘制 296
5.10.6 绘制多个子图 299
5.11 本章小结 300
5.12 思考与提高 301
第6章 可视化分析进阶 304
6.1 绚丽多姿的Seaborn 305
6.1.1 Matplotlib与Seaborn对比 305
6.1.2 Seaborn的样式设置 308
6.1.3 设置应用模式与绘图元素缩放比例 309
6.1.4 使用despine方法进行边框控制 311
6.1.5 使用axes_style方法设置子图风格 312
6.2 Seaborn中的常用绘图 315
6.2.1 回归图 315
6.2.2 对图 317
6.2.3 密度图 319
6.2.4 直方图 323
6.2.5 热力图 329
6.2.6 箱形图 330
6.2.7 小提琴图 334
6.3 手绘风格的绘图 338
6.3.1 手绘曲线 338
6.3.2 手绘柱状图 339
6.3.3 在手绘图中添加中文卡通字体 340
6.3.4 手绘饼状图 343
6.4 实战:泰坦尼克幸存者数据可视化分析 345
6.4.1 导入数据 345
6.4.2 绘制幸存者情况 346
6.4.3 绘制乘客的其他信息 346
6.5 本章小结 351
6.6 思考与练习 351
第7章 时间序列数据分析 354
7.1 时间序列数据概述 355
7.2 日期和时间数据类型 356
7.2.1 datetime模块 356
7.2.2 datetime转换为timestamp 357
7.2.3 datetime转换为str 359
7.2.4 datetime的加与减 359
7.2.5 NumPy中的日期模块 360
7.3 时间序列对象的构建与切片 362
7.3.1 时间序列构造 362
7.3.2 时间索引与切片 364
7.4 日期范围、频率和移位 365
7.4.1 日期范围 366
7.4.2 时间频率 367
7.4.3 时间序列的移位操作 368
7.5 时期的表示 371
7.5.1 时期的创建与运算 371
7.5.2 频率转换 374
7.5.3 时期与周期的转换 375
7.6 时间滑动窗口 376
7.7 重采样、降采样和升采样 383
7.7.1 重采样 383
7.7.2 降采样中的常用参数 385
7.7.3 升采样中的缺失值填充 387
7.8 实战:面向股票数据的时间序列分析 390
7.8.1 股票数据的获取 390
7.8.2 设置百日滚动均线 393
7.8.3 绘制价格与成交量子图 393
7.8.4 股票数据的K线图绘制 395
7.9 本章小结 397
7.10 思考与练习 398