《Python数据科学手册》—学习笔记

《Python数据科学手册》—学习笔记_第1张图片

文章目录

  • 前言
    • 数据科学
  • IPython
    • 使用IPython的两种方式
    • IPython的帮助和文档
    • IPython中的快捷键
    • IPython 魔法命令
    • 输入输出历史
    • IPython和shell命令
    • 错误和调试
    • 代码的分析和计时
  • NumPy入门
    • Python中的数据类型
    • NumPy数组基础
    • NumPy数组的计算:通用函数
    • 聚合:最小值、最大值和其他值
    • 数组的计算:广播
    • 比较、掩码和布尔逻辑
    • 花哨的索引
    • 数组的排序
    • 结构化数据:NumPy的结构化数组
  • Pandas数据处理
    • Pandas对象简介
    • 数据取值与选择
    • Pandas数值运算方法
    • 处理缺失值
    • 层级索引
    • 合并数据集:Concat与Append操作
    • 合并数据集:合并与连接
    • 累计与分组
    • 数据透视表
    • 向量化字符串操作
    • 处理时间序列
    • 高性能Pandas:eval()与query()
  • Matplotlib数据可视化
    • Matplotlib常用技巧
    • 两种画图接口
    • 简易线形图
    • 简易散点图
    • 可视化异常处理
    • 密度图与等高线图
    • 频次直方图、数据区间划分和分布密度
    • 配置图例
    • 配置颜色条
    • 多子图
    • 文字与注释
    • 自定义坐标轴刻度
    • Matplotlib自定义:配置文件与样式表
    • 用Matplotlib画三维图
    • 用Basemap可视化地理数据
    • 用Seaborn做数据可视化
  • 机器学习
    • 什么是机器学习
    • Scikit-Learn简介
    • 超参数与模型验证
    • 特征工程
    • 专题:朴素贝叶斯分类
    • 专题:线性回归
    • 专题:支持向量机
    • 专题:决策树与随机森林
    • 专题:主成分分析
    • 专题:流行学习
    • 专题:k-means聚类
    • 专题: 高斯混合模型
    • 专题: 核密度估计

前言

数据科学

数据科学维恩图
《Python数据科学手册》—学习笔记_第2张图片
数据科学是一个跨学科的课题。数据科学综合了三个领域的能力:统计学家的能力—能够建立模型和聚合(数据量正在不断增大的)数据;计算机科学家的能力—能够设计并使用算法对数据进行高效存储、分析和可视化;领域专家的能力—在细分领域中经过专业训练,既可以提出正确的问题,又可以作为专业的解答。

IPython

IPython是用Python进行有效的交互式科学计算和数据密集型计算。IPython Notebook是Jupyter Notebook结构的特例,Jupyter Notebook不仅支持Python,还包括Julia、R和其他编程语言的Notebook。

使用IPython的两种方式

  • IPython Shell:命令行中输入ipython启动IPython解释器。
  • IPython notebook:Jupyter notebook是IPython shell基于浏览器的图像界面,提供了一个丰富的动态展示功能。尽管IPython notebook是通过Web浏览器窗口进行查看和编辑的,但是它必须与一个正在运行的Python进程连接才能执行代码。需要在命令行中输入jupyter notebook。

IPython的帮助和文档

  • 用符号?获取文档
  • 用符号??获取代码
  • 用Tab补全的方式探索模块

IPython中的快捷键

  • 导航快捷键
    《Python数据科学手册》—学习笔记_第3张图片
  • 文本输入快捷键
    《Python数据科学手册》—学习笔记_第4张图片
  • 命令历史快捷键
    《Python数据科学手册》—学习笔记_第5张图片
  • 其他快捷键
    在这里插入图片描述

IPython 魔法命令

IPython在普通Python语法基础之上的增强功能,称为IPython魔法命令。

魔法命令有两种形式:

  • 行魔法(line magic),行魔法以单个%字符作为前缀,作用于单行输入。
  • 单元魔法(cell magic),单元魔法以两个%%作为前缀,作用于多行输入。

常用命令:

  • 粘贴代码块:%paste和%cpaste(解决包含符号的多行输入问题)

在这里插入图片描述
《Python数据科学手册》—学习笔记_第6张图片

  • 执行外部代码:%run(运行后,代码中包含的所有函数都可以在IPython会话中使用)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 计算代码运行时间:%timeit
    • 单行
      在这里插入图片描述
    • 多行
      《Python数据科学手册》—学习笔记_第7张图片
  • 魔法函数的帮助:?、%magic和%lsmagic

输入输出历史

  • IPython的输入输出对象
    《Python数据科学手册》—学习笔记_第8张图片
  • 下划线快捷键和以前的输出
    《Python数据科学手册》—学习笔记_第9张图片
  • 禁止输出
    《Python数据科学手册》—学习笔记_第10张图片
  • 相关的魔法命令
    《Python数据科学手册》—学习笔记_第11张图片

IPython和shell命令

IPython终端可以直接执行shell命令的语法。一行中任何在!后面的内容将不会通过Python内核运行,而是通过系统命令行运行。
《Python数据科学手册》—学习笔记_第12张图片
在这里插入图片描述
在这里插入图片描述
《Python数据科学手册》—学习笔记_第13张图片

错误和调试

  • 控制异常:%xmode
  • 调试:当阅读轨迹追溯不足以解决问题时
    标准的 Python 交互式调试工具是 pdb,它是 Python 的调试器。这个调试器允许用户逐行运行代码,以便查看可能导致错误的原因。IPython 增强版本的调试器是 ipdb,它是 IPython专用的调试器。IPython 中最方便的调试界面可能就是 %debug 魔法命令了。
    在这里插入图片描述

代码的分析和计时

《Python数据科学手册》—学习笔记_第14张图片

NumPy入门

有效的存储和操作数值数组是数据科学中绝对的基础过程。Python中用来处理这些数值数组的工具:NumPy包和Pandas包。

NumPy(Numerical Python的简称)提供了高效存储和操作密集数据缓存的接口。NumPy数组几乎是整个Python数据科学工具生态系统的核心。

Python中的数据类型

Python变量不仅是它们的值,还包括了关于值的类型的一些额外信息。

标准的Python实现是用C语言编写的。每一个Python对象都是一个聪明的伪C语言结构体,该结构体不仅包含其值,还有其他信息。

  • Python整型
    C语言整型本质上是对应某个内存位置的标签,里面存储的字节会编码成整型。而Python的整型其实是一个指针,指向包含这个Python对象所有信息的某个内存位置,其中包括可以转换成整型的字节。由于Python的整型结构体里面还包含了大量的额外信息,所以Python可以自由、动态的编码。但是Python类型中的这些额外信息也会成为负担,在多个对象组合的结构体中尤为明显。
    《Python数据科学手册》—学习笔记_第15张图片
  • Python列表
    Python具有动态类型特性,所以可以创建一个异构的列表。
    在这里插入图片描述
    拥有灵活性是要付出代价的,为了获得这些灵活的类型,列表中的每一项必须包含各自的类型信息、引用计数和其他信息,每一项都是一个完整的Python对象。如果列表中的所有变量都是同一类型的,那么很多信息就会显得很多余,这时将数据存储在固定类型的数组中应该会更高效。动态类型的列表和固定类型的(NumPy式)数组间的区别如下所示:
    《Python数据科学手册》—学习笔记_第16张图片
    在实现层面,数组基本上包含一个指向连续数据块的指针。另一方面,Python 列表包含一个指向指针块的指针,这其中的每一个指针对应一个完整的 Python 对象(如前面看到的Python 整型)。另外,列表的优势是灵活,因为每个列表元素是一个包含数据和类型信息的完整结构体,而且列表可以用任意类型的数据填充。固定类型的 NumPy 式数组缺乏这种灵活性,但是能更有效地存储和操作数据。
  • Python固定类型数组
    内置的数组(array)模块(在 Python 3.3 之后可用)可以用于创建统一类型的密集数组:
    《Python数据科学手册》—学习笔记_第17张图片
    更实用的是 NumPy 包中的 ndarray 对象。Python 的数组对象提供了数组型数据的有效存储,而 NumPy 为该数据加上了高效的操作。
  • Python列表创建NumPy数组
    《Python数据科学手册》—学习笔记_第18张图片
  • NumPy内置方法创建数组
    《Python数据科学手册》—学习笔记_第19张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第20张图片

NumPy数组基础

  • 数组的属性(确定数组的大小、形状、存储大小、数据类型)
    • ndim:数组的维度
    • shape:数组每个维度的大小
    • size:数组的总大小
    • dtype:数组的数据类型
    • itemsize:每个数组元素字节大小
    • nbytes:数组总字节大小(一般来说,可以认为nbytes跟itemsize和size的乘积大小相等。)
  • 数组的索引(获取和设置数组各个元素的值)
    《Python数据科学手册》—学习笔记_第21张图片
  • 数组的切分(在大的数组中获取或设置更小的子数组)
    《Python数据科学手册》—学习笔记_第22张图片
    《Python数据科学手册》—学习笔记_第23张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第24张图片
    《Python数据科学手册》—学习笔记_第25张图片
    《Python数据科学手册》—学习笔记_第26张图片
    《Python数据科学手册》—学习笔记_第27张图片
    《Python数据科学手册》—学习笔记_第28张图片
    《Python数据科学手册》—学习笔记_第29张图片
  • 数组的变形(改变给定数组的形状)
    《Python数据科学手册》—学习笔记_第30张图片
    《Python数据科学手册》—学习笔记_第31张图片
  • 数组的拼接和分裂(将多个数组合并为一个,以及将一个数组分裂成多个)
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第32张图片
    《Python数据科学手册》—学习笔记_第33张图片
    《Python数据科学手册》—学习笔记_第34张图片
    《Python数据科学手册》—学习笔记_第35张图片
    《Python数据科学手册》—学习笔记_第36张图片

NumPy数组的计算:通用函数

NumPy提供了一个简单灵活的接口来优化数据数组的计算。NumPy数组计算有时非常快,有时非常慢。使NumPy变快的关键是利用向量化操作,通常在NumPy的通用函数(ufunc)中实现。

  • 缓慢的循环
    《Python数据科学手册》—学习笔记_第37张图片
    事实上,这里的处理瓶颈并不是运算本身,而是 CPython 在每次循环时必须做数据类型的检查和函数的调度。
  • 通用函数介绍哦哦
    在这里插入图片描述
    NumPy 中的向量操作是通过通用函数实现的。通用函数的主要目的是对 NumPy 数组中的值执行更快的重复操作。
  • 探索NumPy的通用函数
    《Python数据科学手册》—学习笔记_第38张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第39张图片
    《Python数据科学手册》—学习笔记_第40张图片
    《Python数据科学手册》—学习笔记_第41张图片
    《Python数据科学手册》—学习笔记_第42张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第43张图片
    《Python数据科学手册》—学习笔记_第44张图片
  • 高级的通用函数特性
    《Python数据科学手册》—学习笔记_第45张图片
    《Python数据科学手册》—学习笔记_第46张图片
    《Python数据科学手册》—学习笔记_第47张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第48张图片

聚合:最小值、最大值和其他值

当你面对大量的数据时,第一个步骤通常都是计算相关数据的概括统计值。最常用的概括统计值可能是均值和标准差,这两个值能让你分别概括出数据集中的“经典”值,但是其他一些形式的聚合也是非常有用的(如求和、乘积、中位数、最小值和最大值、分位数,等等)。

  • 数组值求和
    《Python数据科学手册》—学习笔记_第49张图片
    《Python数据科学手册》—学习笔记_第50张图片
  • 最小值和最大值
    《Python数据科学手册》—学习笔记_第51张图片
    《Python数据科学手册》—学习笔记_第52张图片
    《Python数据科学手册》—学习笔记_第53张图片
    《Python数据科学手册》—学习笔记_第54张图片

数组的计算:广播

另外一种向量化操作的方法是利用 NumPy 的广播功能。广播可以简单理解为用于不同大小数组的二进制通用函数(加、减、乘等)的一组规则。

  • 广播的介绍
    《Python数据科学手册》—学习笔记_第55张图片
    《Python数据科学手册》—学习笔记_第56张图片
    浅色的盒子表示广播的值。同样需要注意的是,这个额外的内存并没有在实际操作中进行分配,但是这样的想象方式更方便我们从概念上理解。
  • 广播的规则
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第57张图片
    《Python数据科学手册》—学习笔记_第58张图片
    《Python数据科学手册》—学习笔记_第59张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第60张图片
    《Python数据科学手册》—学习笔记_第61张图片
  • 广播的实际应用
    《Python数据科学手册》—学习笔记_第62张图片
    《Python数据科学手册》—学习笔记_第63张图片

比较、掩码和布尔逻辑

  • 和通用函数类似的比较操作
    《Python数据科学手册》—学习笔记_第64张图片
  • 操作布尔数组
    《Python数据科学手册》—学习笔记_第65张图片
    《Python数据科学手册》—学习笔记_第66张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第67张图片
    《Python数据科学手册》—学习笔记_第68张图片
  • 将不二数组作为掩码
    《Python数据科学手册》—学习笔记_第69张图片

花哨的索引

利用简单的索引值(如 arr[0])、切片(如 arr[:5])和布尔掩码(如 arr[arr > 0])获得并修改部分数组。另外一种数组索引,也称作花哨的索引(fancy indexing)。花哨的索引和前面那些简单的索引非常类似,但是传递的是索引数组,而不是单个标量。花哨的索引让我们能够快速获得并修改复杂的数组值的子数据集。

  • 探索花哨的索引
    《Python数据科学手册》—学习笔记_第70张图片
    《Python数据科学手册》—学习笔记_第71张图片
    《Python数据科学手册》—学习笔记_第72张图片
  • 组合索引
    《Python数据科学手册》—学习笔记_第73张图片
  • 用花哨的索引修改值
    《Python数据科学手册》—学习笔记_第74张图片
    在这里插入图片描述

数组的排序

  • NumPy中的快速排序
    《Python数据科学手册》—学习笔记_第75张图片
    《Python数据科学手册》—学习笔记_第76张图片
  • 部分排序:分隔
    《Python数据科学手册》—学习笔记_第77张图片

结构化数据:NumPy的结构化数组

NumPy的结构化数组合记录数组,为复合的、异构的数据提供了有效的存储。虽然列举的模式对简单的操作有用,但是这些场景通常可以用Pandas的DataFrame来实现。
《Python数据科学手册》—学习笔记_第78张图片
《Python数据科学手册》—学习笔记_第79张图片

  • 生成结构化数组
    在这里插入图片描述
  • 更高级的复合类型
    《Python数据科学手册》—学习笔记_第80张图片
  • 记录数组:结构化数组的扭转
    《Python数据科学手册》—学习笔记_第81张图片

Pandas数据处理

Pandas是在NumPy的基础上建立的新程序库,提供了一种高效的DataFrame数据结构。DataFrame本质上是一种带行标签和列标签、支持相同类型和缺失值的多维数组。Pandas不仅为带各种标签的数据提供了便利的存储界面,还实现了许多强大的操作。

Pandas对象简介

从底层视角可以把Pandas对象看成增强版的NumPy结构化数组,行列都不再只是简单的整数索引,还可以带上标签。Pandas有三个基本数据结构:Series、DataFrame和Index。

  • Pandas的Series对象
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第82张图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第83张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第84张图片
    《Python数据科学手册》—学习笔记_第85张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第86张图片
    《Python数据科学手册》—学习笔记_第87张图片
  • Pandas的DataFrame对象
    《Python数据科学手册》—学习笔记_第88张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第89张图片
    《Python数据科学手册》—学习笔记_第90张图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第91张图片
    《Python数据科学手册》—学习笔记_第92张图片
    《Python数据科学手册》—学习笔记_第93张图片
    《Python数据科学手册》—学习笔记_第94张图片
    在这里插入图片描述
  • Pandas的Index对象
    《Python数据科学手册》—学习笔记_第95张图片
    《Python数据科学手册》—学习笔记_第96张图片
    《Python数据科学手册》—学习笔记_第97张图片
    《Python数据科学手册》—学习笔记_第98张图片
    《Python数据科学手册》—学习笔记_第99张图片

数据取值与选择

  • Series数据选择方法
    《Python数据科学手册》—学习笔记_第100张图片
    《Python数据科学手册》—学习笔记_第101张图片
    《Python数据科学手册》—学习笔记_第102张图片
    《Python数据科学手册》—学习笔记_第103张图片
    《Python数据科学手册》—学习笔记_第104张图片
    《Python数据科学手册》—学习笔记_第105张图片
    《Python数据科学手册》—学习笔记_第106张图片
  • DataFrame数据选择方法
    《Python数据科学手册》—学习笔记_第107张图片
    《Python数据科学手册》—学习笔记_第108张图片
    《Python数据科学手册》—学习笔记_第109张图片
    《Python数据科学手册》—学习笔记_第110张图片
    《Python数据科学手册》—学习笔记_第111张图片
    《Python数据科学手册》—学习笔记_第112张图片
    《Python数据科学手册》—学习笔记_第113张图片
    《Python数据科学手册》—学习笔记_第114张图片

Pandas数值运算方法

  • 通用函数:保留索引
    《Python数据科学手册》—学习笔记_第115张图片
    《Python数据科学手册》—学习笔记_第116张图片
  • 通用函数:索引对齐
    《Python数据科学手册》—学习笔记_第117张图片
    《Python数据科学手册》—学习笔记_第118张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第119张图片
    《Python数据科学手册》—学习笔记_第120张图片
  • 通用函数:DataFrame和Series的运算
    《Python数据科学手册》—学习笔记_第121张图片
    《Python数据科学手册》—学习笔记_第122张图片
    《Python数据科学手册》—学习笔记_第123张图片

处理缺失值

  • 选择处理缺失值的方法
    《Python数据科学手册》—学习笔记_第124张图片
  • Pandas缺失值
    《Python数据科学手册》—学习笔记_第125张图片
    《Python数据科学手册》—学习笔记_第126张图片
    《Python数据科学手册》—学习笔记_第127张图片
  • 处理缺失值
    《Python数据科学手册》—学习笔记_第128张图片
    《Python数据科学手册》—学习笔记_第129张图片
    《Python数据科学手册》—学习笔记_第130张图片
    《Python数据科学手册》—学习笔记_第131张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第132张图片
    《Python数据科学手册》—学习笔记_第133张图片
    《Python数据科学手册》—学习笔记_第134张图片

层级索引

Pandas 提供了 Panel 和 Panel4D 对象解决三维数据与四维数据。而在实践中,更直观的形式是通过层级索引(hierarchical indexing,也被称为多级索引,multi-indexing)配合多个有不同等级(level)的一级索引一起使用,这样就可以将高维数
组转换成类似一维 Series 和二维 DataFrame 对象的形式。

  • 多级索引Series
    《Python数据科学手册》—学习笔记_第135张图片
    《Python数据科学手册》—学习笔记_第136张图片
    《Python数据科学手册》—学习笔记_第137张图片
    在这里插入图片描述
  • 多级索引的创建方法
    《Python数据科学手册》—学习笔记_第138张图片
    《Python数据科学手册》—学习笔记_第139张图片
    《Python数据科学手册》—学习笔记_第140张图片
    《Python数据科学手册》—学习笔记_第141张图片
    《Python数据科学手册》—学习笔记_第142张图片
    《Python数据科学手册》—学习笔记_第143张图片
  • 多级索引的取值与切片
    《Python数据科学手册》—学习笔记_第144张图片
    《Python数据科学手册》—学习笔记_第145张图片
    《Python数据科学手册》—学习笔记_第146张图片
    《Python数据科学手册》—学习笔记_第147张图片
    《Python数据科学手册》—学习笔记_第148张图片
  • 多级索引行列转换
    《Python数据科学手册》—学习笔记_第149张图片
    《Python数据科学手册》—学习笔记_第150张图片
    《Python数据科学手册》—学习笔记_第151张图片
    《Python数据科学手册》—学习笔记_第152张图片
    《Python数据科学手册》—学习笔记_第153张图片
  • 多级索引的数据累计方法
    《Python数据科学手册》—学习笔记_第154张图片

合并数据集:Concat与Append操作

《Python数据科学手册》—学习笔记_第155张图片
在这里插入图片描述
在这里插入图片描述
《Python数据科学手册》—学习笔记_第156张图片
《Python数据科学手册》—学习笔记_第157张图片
《Python数据科学手册》—学习笔记_第158张图片
《Python数据科学手册》—学习笔记_第159张图片
《Python数据科学手册》—学习笔记_第160张图片
《Python数据科学手册》—学习笔记_第161张图片
《Python数据科学手册》—学习笔记_第162张图片

合并数据集:合并与连接

Pandas 的基本特性之一就是高性能的内存式数据连接(join)与合并(merge)操作。

  • 关系代数
    pd.merge() 实现的功能基于关系代数(relational algebra)的一部分。关系代数是处理关系型数据的通用理论,绝大部分数据库的可用操作都以此为理论基础。关系代数方法论的强大之处在于,它提出的若干简单操作规则经过组合就可以为任意数据集构建十分复杂的操作。借助在数据库或程序里已经高效实现的基本操作规则,你可以完成许多非常复杂的操作。Pandas 在 pd.merge() 函数与 Series 和 DataFrame 的 join() 方法里实现了这些基本操作规则。
  • 数据连接的类型
    pd.merge() 函数实现了三种数据连接的类型:一对一、多对一和多对多。这三种数据连接类型都通过 pd.merge() 接口进行调用,根据不同的数据连接需求进行不同的操作。
    《Python数据科学手册》—学习笔记_第163张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第164张图片
    《Python数据科学手册》—学习笔记_第165张图片
  • 设置数据合并的键
    《Python数据科学手册》—学习笔记_第166张图片
    《Python数据科学手册》—学习笔记_第167张图片
    《Python数据科学手册》—学习笔记_第168张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第169张图片
    《Python数据科学手册》—学习笔记_第170张图片
  • 设置数据连接的集合操作规则
    《Python数据科学手册》—学习笔记_第171张图片
    《Python数据科学手册》—学习笔记_第172张图片
  • 重复列名:suffixes参数
    《Python数据科学手册》—学习笔记_第173张图片

累计与分组

  • Pandas的简单累计功能
    《Python数据科学手册》—学习笔记_第174张图片
    《Python数据科学手册》—学习笔记_第175张图片
    《Python数据科学手册》—学习笔记_第176张图片
  • GroupBy:分割、应用和组合
    《Python数据科学手册》—学习笔记_第177张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第178张图片
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第179张图片
    《Python数据科学手册》—学习笔记_第180张图片
    《Python数据科学手册》—学习笔记_第181张图片
    《Python数据科学手册》—学习笔记_第182张图片
    《Python数据科学手册》—学习笔记_第183张图片
    《Python数据科学手册》—学习笔记_第184张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第185张图片
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第186张图片
    《Python数据科学手册》—学习笔记_第187张图片

数据透视表

GroupBy 抽象类是如何探索数据集内部的关联性。数据透视表(pivot table)是一种类似的操作方法,常见于 Excel 与类似的表格应用中。数据透视表将每一列数据作为输入,输出将数据不断细分成多个维度累计信息的二维数据表。数据透视表更像是一种多维的 GroupBy 累计操作。虽然也可以分割 - 应用 - 组合,但是分割与组合不是发生在一维索引上,而是在二维网格上(行列同时分组)。

向量化字符串操作

使用 Python 的一个优势就是字符串处理起来比较容易。在此基础上创建的 Pandas 同样提供了一系列向量化字符串操作(vectorized string operation),它们都是在处理(清洗)现实工作中的数据时不可或缺的功能。

  • Pandas 字符串操作简介
    《Python数据科学手册》—学习笔记_第188张图片
    《Python数据科学手册》—学习笔记_第189张图片
  • Pandas字符串方法列表
    《Python数据科学手册》—学习笔记_第190张图片
    《Python数据科学手册》—学习笔记_第191张图片
    《Python数据科学手册》—学习笔记_第192张图片

处理时间序列

《Python数据科学手册》—学习笔记_第193张图片

  • Python的日期与时间工具
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第194张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第195张图片
  • Pandas时间序列:用时间作索引
    Pandas 时间序列工具非常适合用来处理带时间戳的索引数据。
  • Pandas时间序列数据结构
    在这里插入图片描述
  • 时间频率与偏移量
    《Python数据科学手册》—学习笔记_第196张图片
  • 重新取样、迁移和窗口
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • query()与eval()的设计动机:复合代数式
  • 用Pandas.eval()实现高性能运算
  • 用DataFrame.eval()实现列间运算
  • DataFrame.query()方法
  • 性能决定使用时机

高性能Pandas:eval()与query()

Matplotlib数据可视化

Matplotlib常用技巧

  • 导入Matplotlib
import matplotlib as mpl
import matplotlib.pyplot as plt
  • 设置绘图样式
plt.style.use('classic')
  • 显示图形
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第197张图片
    《Python数据科学手册》—学习笔记_第198张图片
  • 将图形保存为文件
    在这里插入图片描述

两种画图接口

  • MATLAB风格接口
In[9]: plt.figure() # 创建图形
       # 创建两个子图中的第一个,设置坐标轴
       plt.subplot(2, 1, 1) # (行、列、子图编号) 
       plt.plot(x, np.sin(x)) 
       # 创建两个子图中的第二个,设置坐标轴
       plt.subplot(2, 1, 2) 
       plt.plot(x, np.cos(x));

《Python数据科学手册》—学习笔记_第199张图片

  • 面向对象接口
    在这里插入图片描述
In[10]: # 先创建图形网格
        # ax是一个包含两个Axes对象的数组
        fig, ax = plt.subplots(2) 
        # 在每个对象上调用plot()方法
        ax[0].plot(x, np.sin(x)) 
        ax[1].plot(x, np.cos(x));

简易线形图

《Python数据科学手册》—学习笔记_第200张图片

  • 调整图形:线条的颜色与风格
    《Python数据科学手册》—学习笔记_第201张图片
    《Python数据科学手册》—学习笔记_第202张图片
    在这里插入图片描述
  • 调整图形:坐标轴上下限
    《Python数据科学手册》—学习笔记_第203张图片
    《Python数据科学手册》—学习笔记_第204张图片
    《Python数据科学手册》—学习笔记_第205张图片
  • 设置图形标签
    《Python数据科学手册》—学习笔记_第206张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第207张图片

简易散点图

  • 用plt.plot画散点图
    《Python数据科学手册》—学习笔记_第208张图片
    《Python数据科学手册》—学习笔记_第209张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第210张图片
    《Python数据科学手册》—学习笔记_第211张图片
  • 用plt.scatter画散点图
    在这里插入图片描述
    在这里插入图片描述
  • plot与scatter:效率对比
    《Python数据科学手册》—学习笔记_第212张图片

可视化异常处理

  • 基本误差线
x = np.linspace(0,10,50)
dy = 0.8
y = np.sin(x) + dy * np.random.randn(50)
plt.errorbar(x, y, yerr = dy, fmt='.k')
plt.errorbar(x,y,yerr=dy,fmt='o',color='black',ecolor='lightgray',elinewidth=3,capsize=0)

在这里插入图片描述
在这里插入图片描述

  • 连续误差
    《Python数据科学手册》—学习笔记_第213张图片
    《Python数据科学手册》—学习笔记_第214张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第215张图片

密度图与等高线图

在这里插入图片描述

频次直方图、数据区间划分和分布密度

  • 二维频次直方图
    《Python数据科学手册》—学习笔记_第216张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第217张图片
    《Python数据科学手册》—学习笔记_第218张图片
    《Python数据科学手册》—学习笔记_第219张图片

配置图例

《Python数据科学手册》—学习笔记_第220张图片
《Python数据科学手册》—学习笔记_第221张图片
在这里插入图片描述

  • 选择图例显示的元素
    《Python数据科学手册》—学习笔记_第222张图片
    《Python数据科学手册》—学习笔记_第223张图片
  • 在图例中显示不同尺寸的点
    《Python数据科学手册》—学习笔记_第224张图片
  • 同时显示多个图例
    《Python数据科学手册》—学习笔记_第225张图片

配置颜色条

在这里插入图片描述

  • 选择配色方案
    《Python数据科学手册》—学习笔记_第226张图片
  • 颜色条刻度的限制与扩展功能的设置
    在这里插入图片描述
  • 离散型颜色条
    《Python数据科学手册》—学习笔记_第227张图片

多子图

  • plt.axes:手动创建子图
    《Python数据科学手册》—学习笔记_第228张图片
    《Python数据科学手册》—学习笔记_第229张图片
  • plt.subplot:简易网格子图
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第230张图片
    在这里插入图片描述
  • plt.subplots:用一行代码创建网格
    《Python数据科学手册》—学习笔记_第231张图片
    《Python数据科学手册》—学习笔记_第232张图片
    在这里插入图片描述
  • plt.GridSpec:实现更复杂的排列方式
    《Python数据科学手册》—学习笔记_第233张图片
    在这里插入图片描述

文字与注释

在这里插入图片描述
在这里插入图片描述

  • 坐标变换与文字位置
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第234张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第235张图片
  • 箭头和注释
    《Python数据科学手册》—学习笔记_第236张图片

自定义坐标轴刻度

  • 主刻度与次要刻度
    在这里插入图片描述
  • 隐藏刻度和标签
    在这里插入图片描述
  • 增减刻度数量
    《Python数据科学手册》—学习笔记_第237张图片
  • 花哨的刻度格式
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第238张图片
  • 格式生成器与定位器
    《Python数据科学手册》—学习笔记_第239张图片
    《Python数据科学手册》—学习笔记_第240张图片

Matplotlib自定义:配置文件与样式表

  • 手动配置图形
    《Python数据科学手册》—学习笔记_第241张图片
    《Python数据科学手册》—学习笔记_第242张图片
  • 修改默认配置:rcParams
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第243张图片
  • 样式表
    《Python数据科学手册》—学习笔记_第244张图片

用Matplotlib画三维图

在这里插入图片描述
《Python数据科学手册》—学习笔记_第245张图片

  • 三维数据点与线
    《Python数据科学手册》—学习笔记_第246张图片
  • 三维等高线图
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第247张图片
  • 线框图和曲面图
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第248张图片
  • 曲面三角剖分
    《Python数据科学手册》—学习笔记_第249张图片
    《Python数据科学手册》—学习笔记_第250张图片

用Basemap可视化地理数据

在这里插入图片描述
在这里插入图片描述
《Python数据科学手册》—学习笔记_第251张图片

  • 地图投影
    《Python数据科学手册》—学习笔记_第252张图片
    《Python数据科学手册》—学习笔记_第253张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第254张图片
    《Python数据科学手册》—学习笔记_第255张图片
    《Python数据科学手册》—学习笔记_第256张图片
  • 画一个地图背景
    在这里插入图片描述
  • 在地图上画数据
    《Python数据科学手册》—学习笔记_第257张图片

用Seaborn做数据可视化

Seaborn 在 Matplotlib 的基础上开发了一套 API,为默认的图形样式和颜色设置提供了理智的选择,为常用的统计图形定义了许多简单的高级函数,并与 Pandas DataFrame 的功能有机结合。

Seaborn 不仅有许多高级的画图功能,而且可以改写 Matplotlib 的默认参数,从而用简单的 Matplotlib 脚本获得更好的效果。可以用Seaborn 的 set() 方法设置样式。

Seaborn 的主要思想是用高级命令为统计数据探索和统计模型拟合创建各种图形。

  • 频次直方图、KDE和密度图
  • 矩阵图
  • 分面频次直方图
  • 因子图
  • 联合分布
  • 条形图

机器学习

什么是机器学习

虽然对机器学习的研究确实是源自人工智能领域,但是机器学习的方法却应用于
数据科学领域,因此我认为把机器学习看作是一种数学建模更合适。

机器学习的本质就是借助数学模型理解数据。当我们给模型装上可以适应观测数据的可调参数时,“学习”就开始了;此时的程序被认为具有从数据中“学习”的能力。一旦模型可以拟合旧的观测数据,那么它们就可以预测并解释新的观测数据。

  • 机器学习的分类
    《Python数据科学手册》—学习笔记_第258张图片
  • 机器学习应用的定性示例
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第259张图片
    《Python数据科学手册》—学习笔记_第260张图片
  • 小结
    《Python数据科学手册》—学习笔记_第261张图片
    《Python数据科学手册》—学习笔记_第262张图片

Scikit-Learn简介

  • Scikit-Learn的数据表示
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第263张图片
    《Python数据科学手册》—学习笔记_第264张图片
    《Python数据科学手册》—学习笔记_第265张图片
  • Scikit-Learn的评估器API
    《Python数据科学手册》—学习笔记_第266张图片
    《Python数据科学手册》—学习笔记_第267张图片
    《Python数据科学手册》—学习笔记_第268张图片
    《Python数据科学手册》—学习笔记_第269张图片
    《Python数据科学手册》—学习笔记_第270张图片
    《Python数据科学手册》—学习笔记_第271张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第272张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第273张图片
    《Python数据科学手册》—学习笔记_第274张图片
    《Python数据科学手册》—学习笔记_第275张图片
    《Python数据科学手册》—学习笔记_第276张图片

超参数与模型验证

有监督机器学习模型的基本步骤:

  • 选择模型

  • 选择模型超参数

  • 用模型拟合训练数据

  • 用模型预测新数据的标签
    前两步—模型选择和超参数选择—可能是有效使用各种机器学习工具和技术的最重要的阶段。为了做出正确的选择,需要一种方式来验证选中的模型和超参数是否可以很好的拟合数据。

  • 什么是模型验证
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第277张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第278张图片
    《Python数据科学手册》—学习笔记_第279张图片
    《Python数据科学手册》—学习笔记_第280张图片
    《Python数据科学手册》—学习笔记_第281张图片
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第282张图片

  • 选择最优模型
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第283张图片
    《Python数据科学手册》—学习笔记_第284张图片
    《Python数据科学手册》—学习笔记_第285张图片
    《Python数据科学手册》—学习笔记_第286张图片
    《Python数据科学手册》—学习笔记_第287张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第288张图片
    《Python数据科学手册》—学习笔记_第289张图片

  • 学习曲线
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第290张图片
    《Python数据科学手册》—学习笔记_第291张图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第292张图片
    在这里插入图片描述

  • 验证实践:网格搜索
    《Python数据科学手册》—学习笔记_第293张图片

特征工程

《Python数据科学手册》—学习笔记_第294张图片

  • 分类特征
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第295张图片
    《Python数据科学手册》—学习笔记_第296张图片
    《Python数据科学手册》—学习笔记_第297张图片
  • 文本特征
    《Python数据科学手册》—学习笔记_第298张图片
    《Python数据科学手册》—学习笔记_第299张图片
  • 图像特征
    机器学习还有一种常见需求,那就是对图像进行编码。处理手写数字图像时使用的方法,是最简单的图像编码方法:用像素表示图像。
  • 衍生特征
    在这里插入图片描述
    在这里插入图片描述
  • 缺失值填充
    《Python数据科学手册》—学习笔记_第300张图片
  • 特征管道
    《Python数据科学手册》—学习笔记_第301张图片
    《Python数据科学手册》—学习笔记_第302张图片

专题:朴素贝叶斯分类

朴素贝叶斯模型是一组非常简单快速的分类算法,通常适用于维度非常高的数据集。因为运行速度快,而且可调参数少,因此非常适合为分类问题提供快速粗糙的基本方案。

  • 贝叶斯分类
    《Python数据科学手册》—学习笔记_第303张图片
    《Python数据科学手册》—学习笔记_第304张图片
  • 高斯朴素贝叶斯
    《Python数据科学手册》—学习笔记_第305张图片
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第306张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第307张图片
  • 多项式朴素贝叶斯
    在这里插入图片描述
  • 朴素贝叶斯的应用场景

《Python数据科学手册》—学习笔记_第308张图片
《Python数据科学手册》—学习笔记_第309张图片

专题:线性回归

在这里插入图片描述

  • 简单线性回归
    《Python数据科学手册》—学习笔记_第310张图片
  • 基函数回归
    《Python数据科学手册》—学习笔记_第311张图片
    《Python数据科学手册》—学习笔记_第312张图片
    在这里插入图片描述
  • 正则化
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第313张图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

专题:支持向量机

在这里插入图片描述

  • 支持向量机的 由来
    在这里插入图片描述
    在这里插入图片描述
  • 支持向量机:边界最大化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第314张图片
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第315张图片
    在这里插入图片描述
  • 支持向量机总结
    《Python数据科学手册》—学习笔记_第316张图片
    《Python数据科学手册》—学习笔记_第317张图片

专题:决策树与随机森林

《Python数据科学手册》—学习笔记_第318张图片

  • 速记森林的诱因:决策树
    《Python数据科学手册》—学习笔记_第319张图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 评估器集成算法:随机森林
    在这里插入图片描述
  • 随机森林回归
    在这里插入图片描述
    在这里插入图片描述
  • 随机森林总结
    《Python数据科学手册》—学习笔记_第320张图片

专题:主成分分析

在这里插入图片描述

  • 主成分分析简介
    《Python数据科学手册》—学习笔记_第321张图片
    《Python数据科学手册》—学习笔记_第322张图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第323张图片
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第324张图片
    《Python数据科学手册》—学习笔记_第325张图片
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第326张图片
    《Python数据科学手册》—学习笔记_第327张图片
  • 用PCA作噪音过滤
    在这里插入图片描述
  • 主成分分析总结
    当然,PCA 并不是一个对每个高维数据集都有效的算法,但是它提供了一条直接且有效的路径,来获得对高维数据的洞察。
    经常受数据集的异常点影响是 PCA 的主要弱点。

专题:流行学习

《Python数据科学手册》—学习笔记_第328张图片

  • 多维标度法(MDS)
    在这里插入图片描述
  • 将MDS用于流行学习
    在这里插入图片描述
    在这里插入图片描述
  • 非线性嵌入:当MDS失败时
    在这里插入图片描述
  • 非线性流形:局部线性嵌入
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第329张图片
  • 关于流形方法的一些思考
    《Python数据科学手册》—学习笔记_第330张图片

专题:k-means聚类

在这里插入图片描述

  • k-means简介
    《Python数据科学手册》—学习笔记_第331张图片
  • k-means算法:期望最大化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    《Python数据科学手册》—学习笔记_第332张图片

专题: 高斯混合模型

在这里插入图片描述
《Python数据科学手册》—学习笔记_第333张图片
《Python数据科学手册》—学习笔记_第334张图片
在这里插入图片描述
《Python数据科学手册》—学习笔记_第335张图片
《Python数据科学手册》—学习笔记_第336张图片
在这里插入图片描述

专题: 核密度估计

《Python数据科学手册》—学习笔记_第337张图片
在这里插入图片描述
在这里插入图片描述

你可能感兴趣的:(书籍,数据科学,Python)