图书简介:
第一部分 数据分析与处理简介第1章 数据分析与处理概述 21.1 了解大数据 21.2 数据分析与处理的需求 41.3 数据分析与处理的发展前景 5第二部分 科学计算之门——NumPy第2章 NumPy入门 82.1 NumPy简介 82.2 NumPy安装 82.3 NumPy——ndarray对象 92.4 NumPy数据类型 112.4.1 数据类型 112.4.2 数据类型对象(dtype) 122.5 NumPy数组属性 162.6 NumPy创建数组 192.6.1 numpy.empty 192.6.2 numpy.zeros 192.6.3 numpy.ones 202.6.4 numpy.asarray 212.6.5 numpy.frombuffer 222.6.6 numpy.fromiter 232.6.7 numpy.arange 232.6.8 numpy.linspace 242.6.9 numpy.logspace 262.7 NumPy切片和索引 272.7.1 切片和索引 272.7.2 整数数组索引 292.7.3 布尔索引 302.7.4 花式索引 312.8 NumPy迭代数组 322.9 NumPy数组操作 372.9.1 修改数字形状 372.9.2 翻转数组 392.9.3 修改数组维度 422.9.4 连接数组 452.9.5 分割数组 482.9.6 数组的添加与删除 502.10 NumPy位运算 552.10.1 bitwise_and()函数 552.10.2 bitwise_or()函数 552.10.3 invert()函数 562.10.4 left_shift()函数 562.10.5 right_shift()函数 562.11 实战演练 57第3章 NumPy函数 583.1 字符串函数 583.1.1 numpy.char.add()函数 583.1.2 numpy.char.multiply()函数 593.1.3 numpy.char.center()函数 593.1.4 numpy.char.capitalize()函数 593.1.5 numpy.char.title()函数 593.1.6 numpy.char.lower()函数 603.1.7 numpy.char.upper()函数 603.1.8 numpy.char.split()函数 603.1.9 numpy.char.splitlines()函数 613.1.10 numpy.char.strip()函数 613.1.11 numpy.char.join()函数 613.1.12 numpy.char.replace()函数 623.1.13 numpy.char.encode()函数 623.1.14 numpy.char.decode()函数 623.2 数学函数 623.2.1 三角函数 623.2.2 舍入函数 643.2.3 numpy.floor()函数 653.2.4 numpy.ceil()函数 653.3 算术函数 65?3.4 统计函数 673.4.1 numpy.amin()函数和numpy.amax()函数 673.4.2 numpy.ptp()函数 683.4.3 numpy.percentile()函数 683.4.4 numpy.median()函数 693.4.5 numpy.mean()函数 703.4.6 numpy.average()函数 703.4.7 标准差 713.4.8 方差 723.5 排序、搜索和计数函数 723.5.1 numpy.sort()函数 723.5.2 numpy.argsort()函数 733.5.3 numpy.lexsort()函数 743.5.4 numpy.argmax()函数和numpy.argmin()函数 743.5.5 numpy.nonzero()函数 753.5.6 numpy.where()函数 763.5.7 numpy.extract()函数 763.5.8 其他排序 773.6 字节交换 783.7 副本和视图 793.7.1 无复制 793.7.2 视图 803.7.3 副本 813.8 矩阵库 823.9 线性代数 853.10 NumPy IO 903.11 实战演练 93第三部分 数据处理法宝——Pandas第4章 Pandas入门 964.1 Pandas简介 964.2 Pandas安装及数据结构 964.3 系列 974.3.1 创建空系列 984.3.2 由ndarray创建系列 984.3.3 由字典创建系列 994.3.4 使用标量创建系列 994.3.5 从系列中访问数据 1004.3.6 使用标签检索数据 1014.4 数据帧 1014.4.1 创建空数据帧 1024.4.2 使用列表创建数据帧 1024.4.3 使用ndarrays/lists的字典创建数据帧 1034.4.4 使用字典列表创建数据帧 1044.4.5 使用系列的字典创建数据帧 1054.4.6 列选择 1054.4.7 列添加 1064.4.8 列删除 1064.4.9 行选择、添加和删除 1074.4.10 行切片 1084.5 面板 1094.5.1 面板创建 1104.5.2 数据选择 1104.6 基本功能 1114.6.1 T转置 1124.6.2 axes 1134.6.3 dtypes 1134.6.4 empty 1134.6.5 ndim 1144.6.6 shape 1144.6.7 size 1144.6.8 values 1154.6.9 head()方法与tail()方法 1154.7 描述性统计 1164.7.1 sum()函数 1164.7.2 mean()函数 1174.7.3 std()函数 1184.7.4 describe()函数 1184.8 函数应用 1204.8.1 表格函数 1204.8.2 行列合理函数 1214.8.3 元素合理函数 1224.9 重建索引 1234.9.1 重建对象对齐索引 1234.9.2 填充时重新加注 1244.9.3 重建索引时的填充限制 1244.9.4 重命名 1254.10 迭代 1264.11 排序 1274.11.1 按标签排序 1274.11.2 排序顺序 1284.11.3 按列排序 1294.11.4 按值排序 1294.11.5 排序算法 1294.12 字符串和文本数据 1304.12.1 lower()函数 1304.12.2 upper()函数 1304.12.3 len()函数 1314.12.4 strip()函数 1314.12.5 split()函数 1314.12.6 cat()函数 1324.12.7 get_dummies()函数 1324.12.8 contains()函数 1324.12.9 replace()函数 1334.12.10 repeat()函数 1334.12.11 count()函数 1334.12.12 startswith()函数 1334.12.13 endswith()函数 1344.12.14 find()函数 1344.12.15 findall()函数 1344.12.16 swapcase()函数 1354.12.17 islower()函数 1354.12.18 isupper()函数 1354.12.19 isnumeric()函数 1364.13 选项和自定义 1364.13.1 get_option()函数 1364.13.2 set_option()函数 1364.13.3 reset_option()函数 1374.13.4 describe_option()函数 1374.13.5 option_context()函数 1384.14 选择和索引数据 1384.14.1 .loc() 1384.14.2 .iloc() 1394.14.3 .ix() 1394.14.4 使用符号 1394.14.5 属性访问 1404.15 实战演练 140第5章 Pandas进阶 1415.1 统计函数 1415.1.1 pct_change()函数 1415.1.2 协方差 1425.1.3 相关性 1435.1.4 数据排名 1435.2 窗口函数 1445.2.1 .rolling()函数 1445.2.2 .expanding()函数 1455.2.3 .ewm()函数 1455.3 聚合 1455.3.1 在整个DataFrame上应用聚合 1465.3.2 在DataFrame的单列上应用聚合 1465.3.3 在DataFrame的多列上应用聚合 1475.3.4 在DataFrame的单列上应用多个函数 1475.3.5 在DataFrame的多列上应用多个函数 1485.3.6 将不同的函数应用于DataFrame的不同列 1485.4 缺失数据 1495.4.1 为什么会缺失数据 1495.4.2 检查缺失值 1495.4.3 缺失数据的计算 1505.4.4 缺失数据填充 1505.4.5 向前和向后填充 1505.4.6 清除缺失值 1515.4.7 值替换 1515.5 分组 1515.5.1 将数据拆分成组 1525.5.2 查看分组 1525.5.3 迭代遍历分组 1535.5.4 选择一个分组 1535.5.5 聚合 1545.5.6 使用多个聚合函数 1545.5.7 转换 1555.5.8 过滤 1555.6 合并/连接 1565.6.1 合并一个键上的两个数据帧 1575.6.2 合并多个键上的两个数据帧 1575.6.3 使用how参数 1585.7 级联 1595.7.1 concat()函数 1595.7.2 append()函数 1615.7.3 时间序列 1615.8 日期功能 1625.9 时间差 1645.10 分类数据 1655.11 稀疏数据 1695.12 实战演练 170第四部分 优雅的艺术——Matplotlib第6章 Matplotlib 入门 1726.1 Matplotlib简介 1726.2 Matplotlib安装 1736.3 Pyplot教程 1736.3.1 控制线条属性 1766.3.2 处理多个图形和轴域 1776.3.3 处理文本 1786.3.4 在文本中使用数学表达式 1796.3.5 对数和其他非线性轴 1806.4 使用GridSpec自定义子图位置 1816.4.1 subplot2grid 1816.4.2 GridSpec和SubplotSpec 1826.4.3 调整GridSpec布局 1836.4.4 使用SubplotSpec创建GridSpec 1846.4.5 调整GridSpec布局 1856.5 布局 1866.5.1 简单示例 1866.5.2 和GridSpec一起使用 1906.5.3 和AxesGrid1一起使用 1936.5.4 颜色条 1946.6 艺术家教程 1956.6.1 自定义对象 1966.6.2 图形容器 1976.6.3 轴域容器 1976.6.4 轴容器(Axis) 1996.6.5 刻度容器 2016.7 图例指南 2026.7.1 控制图例条目 2026.7.2 代理艺术家 2036.7.3 图例位置 2046.7.4 同轴域的多个图例 2046.7.5 图例处理器 2056.7.6 自定义图例处理器 2066.8 变换 2086.8.1 数据坐标 2086.8.2 混合变换 2096.8.3 创建阴影效果 2106.9 路径 2126.9.1 贝塞尔示例 2136.9.2 复合路径 2146.9.3 路径效果 2166.9.4 添加阴影 2176.9.5 其他 218第7章 Matplotlib更多处理 2207.1 基本文本命令 2207.2 文本属性及布局 2227.3 标注 2257.3.1 基本标注 2257.3.2 使用框和文本标注 2277.3.3 使用箭头标注 2287.4 数学表达式 2317.5 颜色指定 2357.6 事件处理及拾取 2367.6.1 事件连接 2367.6.2 事件属性 2377.6.3 可拖曳的矩形 2397.6.4 鼠标进入和离开 2427.6.5 对象拾取 2447.7 扩展 2467.7.1 透明度填充 2467.7.2 透明、花式图例 2477.7.3 放置文本框 248第五部分 项目实战第8章 数据加载与数据库操作 2528.1 读写文本格式的数据 2528.2 逐块读取文本文件 2568.3 数据写入文本 2588.4 JSON数据处理 2608.5 二进制数据格式 2628.6 HDF5数据格式 2628.7 Pandas操作数据库 265第9章 数据分析 2739.1 数据准备 2739.2 数据处理 2799.3 数据可视化 291附录A 可用Line2D属性 294附录B 习题参考答案 295
展开
《Python 3.5从零开始学》(2017年)和《Python 3.7从零开始学》(2018年)出版后,很多读者向我询问是否可以再出版一本Python高级应用方面的书籍。起初我并没有朝这个方向继续写作的意愿,Python高级应用方面的书籍写起来并不容易,需要长期的技术积累,否则很容易误导读者。在本书写作之际,我已经加入了一个人工智能团队,主要从事一些人工智能项目的研发工作。在研发过程中,我经常思考这样一个问题——如何让和我一样是门外汉但对人工智能感兴趣的人员快速步入人工智能的研发行列?基于对此问题的思考,所以就有了本书的大体结构。2018年,电子工业出版社的章海涛编辑找到我,询问是否可以出版一些Python方面的教程,仔细思考后,结合自己的一些体会列出了三本Python方面的书稿提纲。第一本是《Python实用教程》,主要编写Python基础方面的内容。第二本是《Python实战之数据库应用和数据获取》,主要编写Python与数据库交互和数据爬取等方面的内容。第三本是《Python实战之数据分析与处理》,详细讲解NumPy、Pandas和Matplotlib三方面的内容,并结合这三方面的内容讲解一些具体的数据分析与处理的实战项目。这三本书将会打造成一个“三部曲”,三本书之间有一定的联系。“Python快乐学习班”将贯穿这三本书,每一本书中,“Python快乐学习班”的学员都有一条学习的主线,并以这条主线为基础,在几个不同的地点完成不同的知识点的学习。《Python实用教程》以“Python快乐学习班”的学员去往Python库游玩为主线,在Python库中所游玩的每个“景点”都和《Python实用教程》各章的知识点紧密相关,通过旅游的“触景生情”,学员可以加深对应章节内容的理解。《Python实战之数据库应用和数据获取》以数字校园为主线,在数字校园里,“Python快乐学习班”的学员会接触到不同的数据库,将学习关系型数据库(MySQL)和非关系型数据库(MongoDB)的基本知识与基本操作方式,并将使用Python实现对不同数据库的操作。同时,引入数据爬取相关内容,并以在音乐池中使用爬虫网爬取数据鱼结束。《Python实战之数据分析与处理》以智慧城市为主线,“Python快乐学习班”的学员将在游览“NumPy科技馆”“Pandas数据展览中心”和“Matplotlib艺术宫”的过程中逐步学习NumPy、Pandas和Matplotlib相关的知识点。本书可以帮助读者向人工智能方向迈进,我也把本书称为通往人工智能的“最后一公里”。由于本书主要面向的是有一定Python基础的读者,所以书中没有Python基础的相关内容。对于没有Python基础的读者,不建议直接阅读本书,可以先阅读《Python 3.5从零开始学》《Python 3.7从零开始学》《Python实用教程》中的任何一本,也可以选择Python基础方面的其他书籍。之所以推荐《Python 3.5从零开始学》《Python 3.7从零开始学》《Python实用教程》,主要是因为本书的一些内容和这三本书有一定的联系,购买这三本书中的任何一本进行阅读,都可以帮助读者更快速地理解本书中的部分内容。
刘宇宙
前 言发挥自由想象,并且不囿于已知的知识框架体系,人们就可以根据自己的理解不断进行尝试与突破。计算机技术本身就是没有唯一答案的科学知识体系,在该体系中,任何事情都有可能发生。作者以一种比较容易理解的方式进行编写,是作者对这门技术的一种诠释,同时可以帮助更多读者更好地学习本书内容。在阅读本书的过程中,希望读者多加思考,用自己的理解做一些尝试,也希望读者在阅读本书之后能获取超出本书更多的知识。本书内容偏向于Python应用的高级部分,并运用了很多大学数学的相关知识,但由于作者知识水平有限,书中难免存在不足之处,希望广大读者不吝指教。本书定义为通向人工智能的“最后一公里”,阅读本书可以为人工智能相关知识的学习奠定良好的基础。人工智能算法中会涉及大量数学方面的知识,这些知识点更好地体现在NumPy、Pandas的应用中。NumPy和Pandas中提供了大量科学计算与数据处理方面的函数,所以在人工智能算法的编写过程中,开发人员可以少写很多科学计算方面的函数,在数据处理中也不需要开发人员自己再造“轮子”。在编写本书的过程中,作者也在学习一些机器学习的相关知识,并且观看了吴恩达关于机器学习的一些视频。在吴恩达的课程中,他特地用一些章节讲解代数基础和科学计算工具(Octave)的使用,其中特意提到了NumPy。机器学习或深度学习都涉及科学计算,而科学计算大部分都离不开NumPy,所以学习NumPy是通向人工智能必不可少的环节。作者在写作过程中参考了众多书籍和网络资源,特别是在当今互联网环境下,技术人员在网络上分享了很多有用的信息,作者从中受益颇多,在此向那些热爱分享的技术人员表示衷心的感谢。
本书的特色本书是为使用Python进行科学计算的新手或刚入门者量身定做的,是作者学习和使用Python进行人工智能项目研发的体会和经验总结,涵盖了实际开发中的基础知识点,内容详尽,代码可读性及可操作性强。本书主要介绍NumPy、Pandas、Matplotlib的基本操作。本书使用通俗易懂的描述,引入了丰富的示例代码,同时结合智慧城市中的一些事件,使内容呈现尽可能生动有趣,让一些原本复杂的处理能够通过另一种辅助解释得以简单化,从而使读者充分感受学习的乐趣和魅力。
本书的内容本书包含5部分,共9章,内容安排如下。第一部分 数据分析与处理简介:介绍数据分析与处理概述。第1章主要介绍数据分析与处理的一些基本概念,为读者学习后续章节做铺垫。第二部分 科学计算之门——NumPy:以参观“NumPy科技馆”作为开端,介绍NumPy的基本知识及部分高级操作。第2章以排队进入“NumPy科技馆”作为开端,逐步引出NumPy的一些基础操作。第3章主要介绍NumPy的一些高级应用,如数学函数、统计函数等的使用。第三部分 数据处理法宝——Pandas:以参观“Pandas数据展览中心”为主线,由Pandas的基本知识逐步过渡到高级知识的了解。第4章主要介绍Pandas的基本知识及基础操作。第5章主要讲解Pandas的一些高级特性,如统计、聚合、分组及合并等。第四部分 优雅的艺术——Matplotlib:通过“Matplotlib艺术宫”,将NumPy和Pandas的科技魅力以艺术形式展现出来。第6章主要讲解Matplotlib的基本概念及基础操作。第7章主要讲解Matplotlib的一些高级操作。第五部分 项目实战:包括使用NumPy及Pandas对各种文本格式文件进行处理操作,Pandas连接数据库操作,以及数据分析及数据可视化操作。第8章主要讲解通过Pandas操作数据库,以及通过NumPy和Pandas对各种文本格式的数据进行处理。第9章通过实例展示如何进行数据分析。
读者对象有一定的Python基础,但没有NumPy、Pandas、Matplotlib操作经验的人员。有Python基础,想进一步学习使用Python进行科学计算的人员。有一定的Python基础,想入门人工智能的人员。培训机构、中学及大专院校的学生。
致谢作者在写作过程中参考了一些相关资源的写作手法,并借鉴了其中一些技术点,使本书的内容可以更形象、更生动地展现出来。本书参考的内容主要包括《Python 3.5从零开始学》《Python 3.7从零开始学》《Python实用教程》《Python实战之数据库应用和数据获取》及W3C等资源,在此,对它们的编者表示衷心感谢。另外,刘艳参与了本书部分章节的修改及校稿,对本书的部分内容进行了指正和写作。在刘艳的帮助下,本书的编写进程有了不少提升。相对于基础类书籍,本书的内容相对来说更为深入。希望读者在阅读过程中保持不断求知的心态,时刻保持学习的热情,向更广阔的知识海洋不断探索。
CSDN技术博客:youzhouliu技术问答E-mail:jxgzyuzhouliu@163.com技术问答QQ群:700103920随书源码地址:https://github.com/liuyuzhou/ai_pre_sourcecode.git
展开