基本数据结构
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函数将数据对象分成多个组,然后对每个组调用传入的函数,最后将其组合到一起