pandas学习笔记

来源:互联网 发布:java 多线程 书籍 编辑:程序博客网 时间:2024/06/05 02:08

一、pandas的主要类型

pandas主要有两种形式:Series和DataFrame

  1. Series:
    –index属性,默认是从0开始的整数,可以用index来设定
    –numpy的数组运算会保留索引和值之间的链接
    –可以用字典创建Series,则字典的键就可以变成索引
    –可以通过赋值的方式就地修改
    –name属性‘obj.name='population'

  2. DataFrame:
    –index属性
    –columns属性,表示列
    –列可以通过赋值的方式修改
    –删除列 del frame['a']
    –嵌套字典,外层是列索引,内层是行索引

二、索引

  1. 重新索引:根据新的索引值顺序重排,原来没有的索引的值记为NA
    obj.reindex(['a','b'])
    –fill_value参数,缺失值选择填充值
    –method参数,缺失值插值选项
    –columns。。。重新索引列
    –limit参数,前后的最大填充值
    –copy参数,默认为true,false在原基础上改动
    –同时对行和列索引,插值只能按行应用
  2. 删除:obj.drop[索引值]
  3. 选取:可以用数字、索引和条件选取切片,DataFrame结构上主要针对的是列
  4. 算术运算与数据对齐:结果是索引的并集,不重叠的索引是NA
    –可以在使用算术方法的时候对不重叠的值进行补足,df1.add(df2,fill_value=0)
    –算术方法:add,suv,div,mul
  5. 两种数据之间的计算:广播特征,默认是沿着行广播
    –如果是沿着列广播必须要使用算术方法,同时axis=0,如 frame.sub(series3,axis=0)
  6. 各个列和行之间的计算:
    frame.apply(f) 其中f表示函数
    –axis参数=1时,分行计算
    –对元素的计算:frame.applymap(f)其中f表示函数
  7. 排序和排名
    –按照index排序,obj.sort_index()
    –参数axis=1,表示按列index排序
    –按values排序,obj.order(),缺失值会放在最后
    –希望根据多值排序使用by
    –排名,obj.rank() 默认平级用平均排名
    –ascending=False降序
    –method参数,修改破坏平级关系的方法
  8. 索引有重复值的情况
    –判断是否有重复:obj.index.is_unique
    –如果有重复,索引以后返回的就不是单个元素

三、汇总计算描述统计

  1. 算加和 obj.sum()
    –axis=1按行求和,默认按列
    –skipna默认为true,na会自动排除
    –其他方法:count,describe,min,max…..

  2. 相关系数和协方差
    –corr相关系数
    –cov协方差

  3. 返回唯一值 obj.unique()

  4. 计算各值出现的频率 obj.value_count()
  5. 判断是否具有某些元素,返回布尔值,obj.isin(['b','c'])
    –以上三个在dataframe中的分行分列使用采用apply

四、处理缺失数据

  1. 缺失值表示:numpy.nan,None也会被当作缺失值
  2. 滤除缺失值:data.dropna() data[data.notnull()]
    –默认丢弃所有有na的行,how=’all’ 只丢弃全是na的行
    –默认按行,axis=1可以改成按列
  3. 填充缺失值:
    df.fillna(0)填充0
    –利用字典在fillna之中,可以按列填充不同的值
    –平均值填充data.fillna(data.mean())
    –默认返回新对象,inplace=True可以对现有对象进行修改
    –reindex的插值方法这里也可以用
    –axis修改待填充的轴

五、层次化索引

  1. 拥有多个索引级别,索引可以用数字,或者是names属性来表示
  2. 选取内层索引:data[:,2]
  3. dataframe重组:data.unstack(),逆运算data.stack()
  4. 索引的names属性,可以赋值两者,分别代表一级索引和二级索引
  5. 重排分级顺序 frame.swaplevel('key1','key2')
  6. 对单级别值进行排序,frame.sortlevel(1)
  7. 根据级别汇总统计 frame.sum(level='key2')
  8. 变列为索引, frame.set_index(['c','d']),这里是names为c和d的两列变为索引
    –默认变为索引的列会移除,drop=False不移除
    –逆运算,reset_index
原创粉丝点击