美文网首页Python
Pandas学习随笔(5) 零散功能总结

Pandas学习随笔(5) 零散功能总结

作者: 栽生物坑里的信息汪 | 来源:发表于2018-06-01 16:33 被阅读0次

前言

本来看到这个title的时候。。。我是拒绝的。。。因为这不是我应该看的东西,好歹我也是用了pandas好几年的人,是不是,什么基本必要的功能我不知道??写这个部分简直是侮辱我。。。
但是。。。看着看着突然发现,这是啥,那又是个啥。。。我。。。。。。

王境泽:真香。。

涉及内容

  1. 首尾节选 : .head() .tail() # 前面可以是dataframe也可以是Series...so我省略掉了,下面同理。
  2. 四则运算plus : .add() .sub() .mul() .div() .radd() .rub() .divmod() # 加减乘除那些。。。也真的很基础,最后一个divmod返回整除的结果与余数
  3. 布尔运算与操作 : .eq() .gt() .ne() .lt() .any() .all() .empty() .bool() ,其中any all是经常需要使用的函数,因为一个pandas的object在python中是不能直接转化为布尔值的。一个非空的list就是一个True,而一个Series就会报错,需要使用any all empty bool这些进行转化和提取。
  4. 合并同样本数据(降维):合并存在overlap的数据,(e.g同样本但不同时期的数据)。.combine_first(df),在处理不在意不同时间段的数据是,可以有效、迅速合并多个相同index、column的数据(去除NaN的值)。同时也可以使用.combine(df,combine_method)
  5. 常用的统计方法.count() .sum() .mean() .median() .mad() .min() .max() .abs() .std() .skew() .quantile() .cumsum() .cumprod() .cummax(),其中都可以apply的轴。
  6. 最大最小值的index.idxmax() .idxmin() 直接返回最大、最小值的index
  7. Bining数据:如果需要Bining数据,可以直接使用pd.cut() pd.qcut(),要求需要bin的数目。后者是基于quantiles进行bining,所以要求input切分的百分位构成的list。
  8. apply类似的函数使用.pipe() .apply() .agg() .transform() .applymap()的区别
  9. 重置index.reindex() .reindex_like(),前者是在高版本后经常会被用作提醒的函数。后者则是为了对齐两个/多个df时使用的,相当于前者的一个wrapper版本。
  10. 删除行列、重命名index/columns.drop() .rename(),前者可用于丢一行/列,后者则可以通过字典的方法进行名称的重命名。
  11. 遍历.iterrows() .iteritems() .itertuples(),不同的遍历函数,不赘述。
  12. Series中的多种string方法可以提供快速处理一个series中的所有字符串,并且最重要的是可以有效避开NaN的值。
  13. 排序
  14. 拷贝,注意deepcopy与copy的区别
  15. Dtype
  16. 基于类型来进行选择。!!!神奇,还有这个函数。.select_dtypes()

布尔的转化

  1. 对含多个元素的对象,使用any all对其进行转化
  2. 如果只含有单个元素,但可能维数比较高,此时可以是用bool直接将其取出(不是判断是否为空)
  3. 如果相判断其是否为空,可以使用empty,直接就会转化为单个的True / False

相互的比较

  1. 可以直接使用常规的比较操作符== >= <之类的,返回的是一个等大小的True False的矩阵
  2. 如果想要得到单个的True/False的话,可以直接使用A.equals(B)的操作(必须存在一致的Order/Index)。
  3. 需要注意的是NaN是个Instance,所以每个NaN之间是不相等的。
  4. 长度、形状不同的比较会报错。(与Numpy的处理不一样

合并

  1. combine_firstcombine的特殊应用,后者需要input一个自定义的方法,combiner = lambda x, y: np.where(pd.isna(x), y, x)即前者所使用的combine方法,可以作为参考,接受的两个参数均为df。

多种function application的区别

  1. Tablewise 的函数应用,使用.pipe(),接受一个完整的df。
    e.g f(g(h(df), arg1=1), arg2=2, arg3=3) 等价于 (df.pipe(h).pipe(g, arg1=1).pipe(f, arg2=2, arg3=3) )
  2. row-wise/col-wise的函数应用,使用.apply(),传给apply的函数接受的参数应该是一个Series或者一个array(apply(raw=True),可以有效提升性能),function返回的是Series则最终返回DataFrame,function返回的是int , float之类的话则最终返回Series。
  3. 若希望同时得到多个function的计算结果,则需要使用.agg(),类似于apply,但是可以同时传入多个function(可以用list,也可以用dict),然后得到一个以function名字为index的多个function结果的新df。.describe()的实现本质
  4. 同上的。.transform()是一个类似于agg的函数。
  5. Element-wise的函数操作,则使用.applymap(),每次接受一个值作为输入,输出同样是一个值。

ReIndex

总体而言是一个重置Index/columns的方法,但是细的来说,有三种能够通过reindex来实现的操作。

  1. 重排样本
  2. 插入NaN样本,如果提供的list存在新的值
  3. 对于时间序列数据,可以使用fill_value参数控制缺失的样本的值。

对于.reindex_like(),其帮助信息中有一句,其相当于s.reindex(index=other.index,columns=other.columns)
如果为了对齐几个矩阵,还有一个叫.align()的方法,具官方说是最快对齐两个object的方法。使用的方法也十分简单,这里也就不加赘述。

排序

  1. 按照index排序,了解一下.reindex()
  2. 按照排序,了解一下.sort_values()
  3. 按照提供的值进行排序,返回可插入的index。了解一下.searchshorted()
  4. 返回前n个最大/小值,了解一下.nsmallest() .nlargest()

类型

如何查看所有的dtype与其继承关系呢!

def subdtypes(dtype):
  subs = dtype.__subclasses__()
  if not subs:
    return dtype
  return [dtype, [subdtypes(dt) for dt in subs]]

Reference

  1. Essential Basic Functionality

相关文章

网友评论

    本文标题:Pandas学习随笔(5) 零散功能总结

    本文链接:https://www.haomeiwen.com/subject/cgknrftx.html