python之pandas库

python之pandas库

  • 1. 前言
  • 2. 对象创建
    • 2.1 带标签的一维数组series
      • 2.1.1 用列表创建
      • 2.1.2 用一维numpy数组创建
      • 2.1.3 用字典创建
      • 2.1.4 data为标量的情况
    • 2.2 带标签的多维数组DataFrame
      • 2.2.1 通过Series对象创建
      • 2.2.2 通过Series对象字典创建
      • 2.2.3 通过字典列表对象创建
      • 2.2.4 通过Numpy二维数组创建
  • 3. DataFram性质
    • 3.1 属性
      • 3.1.1 df.values返回numpy数组表示的数据
      • 3.1.2 df.index返回行索引
      • 3.1.3 df.columns返回列索引
      • 3.1.4 df.shape 返回形状,维度
      • 3.1.5 df.size 返回数据大小
      • 3.1.6 pf.dtype返回每列数据的数据类型
    • 3.2 索引
      • 3.2.1 获取列
      • 3.2.2 获取行
      • 3.2.3 获取标量
      • 3.2.4 Series对象的索引
    • 3.3 切片
      • 3.3.1 行切片
      • 3.3.2 列切片
      • 3.3.3 多种多样的取值
    • 3.4 布尔索引
      • 3.4.1 比较运算
      • 3.4.2 掩码
      • 3.4.3 isin()方法
    • 3.5 赋值
      • 3.5.1 增加新列
      • 3.5.2 修改Index和columns
  • 4. 数值运算及统计分析
    • 4.1 数据查看
      • 4.1.1 查看前面的行
      • 4.1.2 查看后面的行
      • 4.1.3 查看总体信息
    • 4.2 调用函数
      • 4.2.1 向量化运算
      • 4.2.2 矩阵化运算
      • 4.2.3 广播运算
      • 4.2.4 Pandas相对Numpy的新方法
    • 4.3 统计相关
      • 4.3.1 种类
      • 4.3.2 排序
      • 4.3.3 非空,求和,最大最小值
      • 4.3.4 均值,方差,标准差
      • 4.3.5 相关系数,协方差
      • 4.3.6 汇总输出 decribe()
      • 4.3.7 apply()自定义输出
  • 5 处理缺失值
    • 5.1 发现缺失值
    • 5.2 删除缺失值
      • 5.2.1 删除整行
      • 5.2.2 删除整列
      • 5.2.3 删除全是缺失值的行或者列
      • 5.2.4 删除只有存在缺失值的行或者列
    • 5.3 填充缺失值 fillna
      • 5.3.1 按照指定值进行填充
      • 5.3.2 按照均值进行填充
  • 6. 合并数据
    • 6.1 concat
    • 6.2 merge对齐合并
  • 7. 分组和数据透视表
    • 7.1 分组groupby
      • 7.1.1 延迟计算
      • 7.1.2 按列取值,调用方法
      • 7.1.3 apply方法
      • 7.1.4 设置分组值
    • 7.2 数据透射表
  • 8. 其它
    • 8.1 向量化字符串操作
    • 8.2 时间序列化处理
    • 8.3 多级索引
    • 8.4 高性能的eval和query

1. 前言

numpy在处理带标签的数据上有些力不从心。
python之pandas库_第1张图片

2. 对象创建

2.1 带标签的一维数组series

  • 语法
pd.Series(data, index=index, dtype=dtype)

data: 数据,可以是列表,字典或者Numpy数组
index: 索引(标签),可选参数
dtype: 数据类型,可选参数

2.1.1 用列表创建

  • index缺省,默认为整数序列
    python之pandas库_第2张图片
  • 增加index标签
    python之pandas库_第3张图片
  • 增加数据类型
    如果缺省,根据传入的数据自动挡那个判断
    在这里插入图片描述

python之pandas库_第4张图片
数据支持多种类型,如

python之pandas库_第5张图片
数据类型可以被强制改变
python之pandas库_第6张图片
若元素不能被强制转化成对应的数据类型,将会报错。

2.1.2 用一维numpy数组创建

python之pandas库_第7张图片

2.1.3 用字典创建

  • 默认字典中的key为对象的index, value为对象中的data
    python之pandas库_第8张图片
  • 字典创建,如果指定index, 则会到字典中筛选,找不到的,设置值为Nan
    在这里插入图片描述

2.1.4 data为标量的情况

此时,值会自动赋值,填满所有标签。

python之pandas库_第9张图片

2.2 带标签的多维数组DataFrame

  • 语法
pd.DataFrame(data, index=index, columns=columns)

data: 数据,可以是列表,字典,或者numpy数组
index: 索引,可选参数
columns: 列标签,可选参数

2.2.1 通过Series对象创建

python之pandas库_第10张图片
列标签缺省,默认从0开始的整数
python之pandas库_第11张图片

2.2.2 通过Series对象字典创建

python之pandas库_第12张图片

python之pandas库_第13张图片
数据不够时,会自动对齐
python之pandas库_第14张图片

2.2.3 通过字典列表对象创建

  • 将列表中的每一个字典作为行值

  • 字典索引作为index,字典键作为columns
    python之pandas库_第15张图片

  • 不存在的键,会默认值为Nan
    python之pandas库_第16张图片

2.2.4 通过Numpy二维数组创建

python之pandas库_第17张图片

3. DataFram性质

3.1 属性

python之pandas库_第18张图片

3.1.1 df.values返回numpy数组表示的数据

即去除了标签
python之pandas库_第19张图片

3.1.2 df.index返回行索引

在这里插入图片描述

3.1.3 df.columns返回列索引

在这里插入图片描述

3.1.4 df.shape 返回形状,维度

返回(m, n)表示m行n列
python之pandas库_第20张图片

3.1.5 df.size 返回数据大小

在这里插入图片描述

3.1.6 pf.dtype返回每列数据的数据类型

python之pandas库_第21张图片

3.2 索引

python之pandas库_第22张图片

3.2.1 获取列

  • 字典方式
    python之pandas库_第23张图片

  • 对象属性方式
    python之pandas库_第24张图片

3.2.2 获取行

  • 绝对索引 df.loc
    python之pandas库_第25张图片

  • 相对索引 df.iloc

python之pandas库_第26张图片

3.2.3 获取标量

  • 绝对索引
    python之pandas库_第27张图片

  • 相对索引

python之pandas库_第28张图片

3.2.4 Series对象的索引

取dataframe一行数据为Series对象,验证:
在这里插入图片描述

python之pandas库_第29张图片

3.3 切片

python之pandas库_第30张图片

3.3.1 行切片

python之pandas库_第31张图片

在这里插入图片描述
第三行取不到

3.3.2 列切片

python之pandas库_第32张图片

3.3.3 多种多样的取值

  • 行列同时切片
    python之pandas库_第33张图片

  • 行切片,列分散取值
    python之pandas库_第34张图片

  • 行分散取值,列切片
    python之pandas库_第35张图片

  • 行列均分散取值
    python之pandas库_第36张图片
    loc是不能成功的。

3.4 布尔索引

3.4.1 比较运算

python之pandas库_第37张图片

python之pandas库_第38张图片

3.4.2 掩码

python之pandas库_第39张图片
python之pandas库_第40张图片

3.4.3 isin()方法

python之pandas库_第41张图片

3.5 赋值

3.5.1 增加新列

  • 增加新列
    python之pandas库_第42张图片
  • 修改赋值

python之pandas库_第43张图片

3.5.2 修改Index和columns

python之pandas库_第44张图片

4. 数值运算及统计分析

4.1 数据查看

python之pandas库_第45张图片

4.1.1 查看前面的行

python之pandas库_第46张图片

4.1.2 查看后面的行

python之pandas库_第47张图片

4.1.3 查看总体信息

python之pandas库_第48张图片
python之pandas库_第49张图片

4.2 调用函数

4.2.1 向量化运算

python之pandas库_第50张图片

4.2.2 矩阵化运算

python之pandas库_第51张图片

  • 转置
    在这里插入图片描述
  • dot矩阵相乘
    python之pandas库_第52张图片
    numpy和Pandas运算对比

纯粹的计算在Numpy中执行更快,Numpy更侧重于计算,Pandas侧重于数据处理。
Pandas基于Numpy,除了Pandas中额外的开销外,计算速度是差不多的。
python中原生的for循环速度明显慢很多。

4.2.3 广播运算

在这里插入图片描述

  • 按行广播
    python之pandas库_第53张图片

  • 按列广播
    python之pandas库_第54张图片

4.2.4 Pandas相对Numpy的新方法

  • 索引对齐
    python之pandas库_第55张图片

4.3 统计相关

4.3.1 种类

python之pandas库_第56张图片

4.3.2 排序

  • 通过某个列标签进行排序
    python之pandas库_第57张图片
  • 按轴进行排序(按行列标签进行排序)

python之pandas库_第58张图片

python之pandas库_第59张图片

4.3.3 非空,求和,最大最小值

  • 非空
    python之pandas库_第60张图片
  • 求和
    sum默认是以列为单位,将该列对应的所有行值相加

python之pandas库_第61张图片

  • 最大最小值
    python之pandas库_第62张图片

4.3.4 均值,方差,标准差

  • 均值
    python之pandas库_第63张图片
  • 方差

python之pandas库_第64张图片

  • 标准差
    在这里插入图片描述

  • 中位数
    在这里插入图片描述

  • 众数
    在这里插入图片描述

  • 75%分位数
    在这里插入图片描述

  • 一网打尽方法

python之pandas库_第65张图片
数值类型:
python之pandas库_第66张图片
字符类型:
python之pandas库_第67张图片

4.3.5 相关系数,协方差

  • 相关性系数
    python之pandas库_第68张图片
  • 看与某一列的相关系数
    在这里插入图片描述

4.3.6 汇总输出 decribe()

4.3.7 apply()自定义输出

python之pandas库_第69张图片

  • cumsum: 累加函数

5 处理缺失值

5.1 发现缺失值

在数据中最好不要None,None更加消耗资源,使用NaN,np.NaN是一种特殊的浮点数。
python之pandas库_第70张图片

5.2 删除缺失值

5.2.1 删除整行

python之pandas库_第71张图片

5.2.2 删除整列

在这里插入图片描述

5.2.3 删除全是缺失值的行或者列

python之pandas库_第72张图片

5.2.4 删除只有存在缺失值的行或者列

将5.2.3中的All改为any即可。

5.3 填充缺失值 fillna

5.3.1 按照指定值进行填充

python之pandas库_第73张图片

5.3.2 按照均值进行填充

python之pandas库_第74张图片

6. 合并数据

6.1 concat

  • 垂直合并
    python之pandas库_第75张图片
    python之pandas库_第76张图片

  • 水平合并

在这里插入图片描述

  • 当索引产生重复时,需要对索引进行重新排列,加上ignore_index=True即可
    python之pandas库_第77张图片

6.2 merge对齐合并

两个对象元素存在相同时候,需要进行merge合并
python之pandas库_第78张图片

7. 分组和数据透视表

python之pandas库_第79张图片

7.1 分组groupby

7.1.1 延迟计算

python之pandas库_第80张图片
执行groupby()时,会返回一个对象,并没有开始计算,等待调用函数时,采用进行计算。
python之pandas库_第81张图片

7.1.2 按列取值,调用方法

  • 按列取值
    python之pandas库_第82张图片

  • 按组迭代
    python之pandas库_第83张图片

  • 调用方法
    python之pandas库_第84张图片

  • 支持更复杂的操作
    python之pandas库_第85张图片

  • 过滤
    python之pandas库_第86张图片

  • 转换
    python之pandas库_第87张图片

7.1.3 apply方法

python之pandas库_第88张图片

7.1.4 设置分组值

python之pandas库_第89张图片

  • 用字典将索引映射到分组
    python之pandas库_第90张图片
  • 任意的python函数进行分组
    python之pandas库_第91张图片
  • 多个有效值组成的列表
    在这里插入图片描述

7.2 数据透射表

privot_table

8. 其它

8.1 向量化字符串操作

8.2 时间序列化处理

8.3 多级索引

8.4 高性能的eval和query

  • 减少了复合代数式计算中间过程的内存分配
  • 内存一定,数据越大越有优势
    python之pandas库_第92张图片

你可能感兴趣的:(学习记录,python,pandas)