一、pandas的主要类型
pandas主要有两种形式:Series和DataFrame
Series:
–index属性,默认是从0开始的整数,可以用index来设定
–numpy的数组运算会保留索引和值之间的链接
–可以用字典创建Series,则字典的键就可以变成索引
–可以通过赋值的方式就地修改
–name属性‘obj.name='population'
DataFrame:
–index属性
–columns属性,表示列
–列可以通过赋值的方式修改
–删除列del frame['a']
–嵌套字典,外层是列索引,内层是行索引
二、索引
- 重新索引:根据新的索引值顺序重排,原来没有的索引的值记为NA
–obj.reindex(['a','b'])
–fill_value参数,缺失值选择填充值
–method参数,缺失值插值选项
–columns。。。重新索引列
–limit参数,前后的最大填充值
–copy参数,默认为true,false在原基础上改动
–同时对行和列索引,插值只能按行应用 - 删除:
obj.drop[索引值]
- 选取:可以用数字、索引和条件选取切片,DataFrame结构上主要针对的是列
- 算术运算与数据对齐:结果是索引的并集,不重叠的索引是NA
–可以在使用算术方法的时候对不重叠的值进行补足,df1.add(df2,fill_value=0)
–算术方法:add,suv,div,mul - 两种数据之间的计算:广播特征,默认是沿着行广播
–如果是沿着列广播必须要使用算术方法,同时axis=0,如frame.sub(series3,axis=0)
- 各个列和行之间的计算:
–frame.apply(f)
其中f表示函数
–axis参数=1时,分行计算
–对元素的计算:frame.applymap(f)
其中f表示函数 - 排序和排名
–按照index排序,obj.sort_index()
–参数axis=1,表示按列index排序
–按values排序,obj.order()
,缺失值会放在最后
–希望根据多值排序使用by
–排名,obj.rank()
默认平级用平均排名
–ascending=False降序
–method参数,修改破坏平级关系的方法 - 索引有重复值的情况
–判断是否有重复:obj.index.is_unique
–如果有重复,索引以后返回的就不是单个元素
三、汇总计算描述统计
算加和 obj.sum()
–axis=1按行求和,默认按列
–skipna默认为true,na会自动排除
–其他方法:count,describe,min,max…..相关系数和协方差
–corr相关系数
–cov协方差返回唯一值
obj.unique()
- 计算各值出现的频率
obj.value_count()
- 判断是否具有某些元素,返回布尔值,
obj.isin(['b','c'])
–以上三个在dataframe中的分行分列使用采用apply
四、处理缺失数据
- 缺失值表示:numpy.nan,None也会被当作缺失值
- 滤除缺失值:
data.dropna()
data[data.notnull()]
–默认丢弃所有有na的行,how=’all’ 只丢弃全是na的行
–默认按行,axis=1可以改成按列 - 填充缺失值:
–df.fillna(0)
填充0
–利用字典在fillna之中,可以按列填充不同的值
–平均值填充data.fillna(data.mean())
–默认返回新对象,inplace=True可以对现有对象进行修改
–reindex的插值方法这里也可以用
–axis修改待填充的轴
五、层次化索引
- 拥有多个索引级别,索引可以用数字,或者是names属性来表示
- 选取内层索引:
data[:,2]
- dataframe重组:
data.unstack()
,逆运算data.stack()
- 索引的names属性,可以赋值两者,分别代表一级索引和二级索引
- 重排分级顺序
frame.swaplevel('key1','key2')
- 对单级别值进行排序,frame.sortlevel(1)
- 根据级别汇总统计
frame.sum(level='key2')
- 变列为索引,
frame.set_index(['c','d'])
,这里是names为c和d的两列变为索引
–默认变为索引的列会移除,drop=False不移除
–逆运算,reset_index