数据分析--pandas 处理结构化数据

基本数据结构

Series

类似于一维数组于字典的结合,是一个 有索引的一维数组。
values 一组数据(ndarray类型)
index 相关数据索引标签 用来显示索引 显示索引可以增加Series的可读性

  • Series对象的创建
    索引可以选择性的输入
    左侧为索引,右侧为值在这里插入图片描述
    通过字典创建Series对象
    在这里插入图片描述

  • Series对象的访问
    通过iloc函数和loc函数直接访问,
    通过类似于数组和属性的方式进行访问
    在这里插入图片描述

  • Series对象的操作
    NumPy对ndarray对象进行的操作,对Series对象同同样可以。由于有索引的存在,在操作中存在索引对其的问题

  • Series对象的属性
    索引 index
    值 values

DataFrame

DataFrrame是一个表格型的数据结构,DataFrame由按一定顺序排列的多列数据组成,设计初衷是将Series的使用场景从一维拓展到多维,DataFrame既有行索引,也有列索引

  • 行索引:index
  • 列索引:columns
  • 值 values
  • DataFrame的创建
  • 创建DataFrame对象时可以接受多种输入包括一维的ndarray对象、列表、字典、Series对象的字典,二维的ndarray对象、Series对象,或者其他DataFrame,行索引,列索引可以通过index、columns参数指定,若没有名确的给出,则会设置默认值
    • 通过值为列表的字典进创建DataFrame
      在这里插入图片描述

    • 使用columns参数指定为列索引
      在这里插入图片描述

    • DataFrame对象的columns、index、values属性
      在这里插入图片描述

    • 通过值为Series对象的字典创建DataFrame对象
      每一个Series为一列,
      若不指定index。则所有Series对象的index属性的并集作为DataFrame的index。若某一个Series种不存在对应的index则赋值NaN;
      若指定index,则会与指定索引相匹配,不能匹配的索引对应的值被标记为NaN
      在这里插入图片描述
      在这里插入图片描述

  • 通过元素为字典的列表创建DataFrame对象
    每一个字典作为一列,键作为列名,键不存在色值设为NaN,若不指定index。则index为默认值
    在这里插入图片描述
  • 通过Series对象创建DataFrame对象
    一个Series一列,name为其列名
    在这里插入图片描述

DataFrame对象的访问

  • iloc 通过隐式索引取行
  • loc通过显示索引取行
    在这里插入图片描述
    直接通过列索引对DataFrame对象进行操作

直接取指定元素,第一个参数为行,第二个参数为列
在这里插入图片描述
切片
在这里插入图片描述
删除操作

# drop操作 对行或列进行删除操作,默认axis=0,表示对行进行操作,axis=1 表示对列进行操作,是否改变原数据根据inplace的参数,True或False
df = pd.DataFrame(np.random.randn(4,5),columns=list('ABCDE'),index=range(1,5))
df
df.drop(['A'],axis=1)  # 删除第一列,不改变原数据
df.drop(['A'],axis=1,inplace=True)    # 删除第一列,改变原数据

# del操作,对列进行删除操作
del df['B']
# pop操作,进行删除列的操作,并以Series对象返回被删除的列
column_B = df.pop('B')

基于pandas的index对象访问操作

pandas的index对象包括Series的index和DataFrame的index和columns

pandas的index对象

pandas中的Index对象负责管理轴标签和其他元素
Index对象的特性:不可修改性,有序性,可切片
不可修改性,能够保证在多个数据结构间的安全共享

索引的不同访问方式

调用方式
  • loc函数 显示索引
    loc的访问方式是基于标签(label)的,包括行标签(index),列表签(columns),
    表达式df.loc[index._argument<,col_argument>],首先是选择行,列可以省略
    输入的参数可以是,单个标签,标签数组,或者标签的分片形式,布尔值组、接受参数为调用loc函数的对象的回调函数
  • iloc函数方式 隐式索引
    iloc关注的是index的位置,用法和loc类似
    输入的参数可以是单个整数,数组,位置的切片,布尔值数组接受参数为调用loc函数的对象的回调函数
  • 类似字典方式的访问
    可以直接将Series对象和DataFrame对象看作一个字典,而DataFarme对象相当于每一个元素都是Series对象的字典,所以可以用类似访问字典的方法进行访问
  • 类似访问属性的方式
    接受的参数类型有 单个变量、数组、布尔值类型数组或者回调函数
调用方式间的区别
  • loc函数与iloc函数的区别
    都是对index的访问
    loc接受的是Index对象(index和columns)的标签 显示
    iloc结束的是Index对象(index和columns)的位置 隐式
  • 通过loc函数和通过切片操作[]访问的区别
    loc和切片操作都是基于标签的索引
    loc函数首先对行标签(index)进行访问
    切片操作是先对列标签(columns)的访问
    两者在Series中没有差别
特殊参数类型
  • 输入为布尔类型数组
  • 输入为回调函数

数学统计和计算工具

统计函数,协方差、相关系数、排序

协方差协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

  • cov函数:计算协方差,可以计算Series对象和另一个Series对象的协方差
    在这里插入图片描述

  • DataFrame提供的cov函数,可以计算DataFrame对象各个列之间的协方差,得到一个协方差矩阵,当DataFrame对象中出现NaN,函数会排除它继续进行计算

  • 协方差矩阵是一个对称矩阵
    在这里插入图片描述
    有个空值得情况
    在这里插入图片描述

  • 相关系数

  • 皮尔森相关系数

  • 斯皮尔曼相关系数

  • 肯德尔相关系数

窗口函数

  • Rolling对象
    产生的是定长的窗口,需要通过参数window指定窗口大小,
    通过参数指定窗口最小非NaN值的个数
  • Expanding对象
    产生的是扩展窗口,第i个窗口的大小为i,可以将其看做特殊的window为数据长度、min_periods为1的Rolling对象·
  • EWM对象
    产生的是加权窗口,其中需要定义衰减因子a
    有很多定义衰减因子的方法。时间间隔、质心、指数权重减少到一半需要的时间,或者直接定义

数学聚合和分组运算

group by 包括三个阶段,

  • split阶段,通过一些原则将数据分组
  • apply阶段 每一个分组分别执行一个函数,产生一个新值
  • combine阶段 将各组的结果合并并分配到最终对象

agg函数的聚合操作

通过使用GroupBy对象的agg函数实现自定义函数,
在这里插入图片描述
通过agg函数还可以实现一次性应用多个函数,
在这里插入图片描述
通过agg函数还可以实现对不同列使用不同的函数
在这里插入图片描述

transform函数的转换操作

将一个函数应用到每一个分组内,返回的结果长度和宽度和原来的数据长度相同,而不是每一个组只有一个结果
如果该函数作用于每一个组,计算得到的是一个标量,则它会被广播出去,使每一个组的成员得到相同的值
在这里插入图片描述
transform函数的自定义函数
在这里插入图片描述

apply函数的一般操作

agg函数和transform函可以通过某些约束自定定义函数对GroupBy对象进行操作,有些 操作不符合这两类的约束,
apply函数将数据对象分成多个组,然后对每个组调用传入的函数,最后将其组合到一起
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼干儿♛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值