zoukankan      html  css  js  c++  java
  • 数据规整化:清理、转换、合并、重塑





    合并数据集
    • 数据库风格的DataFrame合并(pandas.merge方法):
      • 通过一个或多个键将行链接起来的
      • 如果没有指定要用哪个列进行连接,merge就会将重叠列的列名当做键。最好显式指定一下(on=; left_on, right_on;)
      • 默认情况下,merge做的是"inner"连接;结果中的键是交集。其他方式还有"left"、"right"以及"outer"。外连接求取的是键的并集,组合了左连接和右连接的效果。
      • 多对多连接产生的是行的笛卡尔积
      • 要根据多个键进行合并,传入一个由列名组成的列表即可


    • 索引上的合并:
      • DataFrame中的连接键位于其索引中,merge函数传入left_index=True或right_index=True(或两个都传)
      • DataFrame还有一个join实例方法,它能更为方便地实现按索引合并(默认在连接键上做左连接)
      • 对于简单的索引合并,你还可以向join传入一组DataFrame
    • 轴向连接:

    • 合并重叠数据:
      • combine_first方法:用参数对象中的数据为调用者对象的缺失数据“打补丁”(先从第一个对象中选值,不行就再去第二个对象中选值)

    重塑和轴向旋转:
    • 重塑层次化索引:
      • ·stack:将数据的列“旋转”为行。
      • ·unstack:将数据的行“旋转”为列。
      • 默认情况下,unstack操作的是最内层(stack也是如此)。传入分层级别的编号或名称即可对其他级别进行unstack操作。
      • 如果不是所有的级别值都能在各分组中找到的话,则unstack操作可能会引入缺失数据。
      • stack默认会滤除缺失数据,因此该运算是可逆的
    • 将“长格式”旋转为“宽格式”:
      • pivot方法:只是一个快捷方式而已:用set_index创建层次化索引,再用unstack重塑

    数据转换:
    • 移除重复数据:
      • DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行
      • drop_duplicates方法返回一个移除了重复行的Data-Frame
      • 默认会判断全部列,你也可以指定部分列进行重复项判断
    • 利用函数或映射进行数据转换:
      • Series的map方法可以接受一个函数或含有映射关系的字典型对象
      • map方法实现的是元素级转换
    • 替换值:
      • replace方法
      • fillna方法,map
    • 重命名轴索引:
      • 可以通过函数或映射进行转换,从而得到一个新对象。
      • 赋值给index属性,轴还可以被就地修改,而无需新建一个数据结构。
      • 如果想要创建数据集的转换版(而不是修改原始数据),比较实用的方法是rename(结合字典型对象实现对部分轴标签的更新)
    • 离散化和面元划分:
      • cut函数:查看结果的codes属性和categories属性
      • 圆括号表示开端,而方括号则表示闭端(包括)
      • 如果向cut传入的是面元的数量而不是确切的面元边界,则它会根据数据的最小值和最大值计算等长面元。
      • qcut是一个非常类似于cut的函数,它可以根据样本分位数对数据进行面元划分
    • 检测和过滤异常值:
      • 很大程度上其实就是数组运算
      • 要选出全部含有“超过3或-3的值”的行,你可以利用布尔型DataFrame以及any方法
      • np.sign这个ufunc返回的是一个由1和-1组成的数组,表示原始值的符号,将值限制在区间-3到3以内:np.sign(data) * 3
    • 排列和随机采样:
      • 通过需要排列的轴的长度调用permutation,可产生一个表示新顺序的整数数组
      • 如果不想用替换的方式选取随机子集,则可以使用permutation:从permutation返回的数组中切下前k个元素,其中k为期望的子集大小。
      • 要通过替换的方式产生样本,最快的方式是通过np.random.randint得到一组随机整数
    • 计算指标/哑变量:
      • 将分类变量转换为“哑变量矩阵”或“指标矩阵”:如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值全为1和0)
      • get_dummies函数
      • 一个对统计应用有用的秘诀是:结合get_dummies和诸如cut之类的离散化函数

    字符串对象方法
    • 字符串对象方法:
      • 检测子串的最佳方式是利用Python的in关键字(当然还可以使用index和find)
      • count函数,它可以返回指定子串的出现次数
      • replace用于将指定模式替换为另一个模式。它也常常用于删除模式:传入空字符串。


    • 正则表达式:

    • pandas中矢量化的字符串函数:
      • Series有一些能够跳过NA值的字符串操作方法。通过Series的str属性即可访问这些方法。








  • 相关阅读:
    Hessian简要入门
    MapReduce启动的Map/Reduce子任务简要分析
    hive默认分隔符引起的日志分割问题
    Spring MVC中发布Restful Web服务
    JPA基本介绍以及使用
    hsqldb简单使用总结
    Vim编辑器基本操作学习(二)
    locale错误导致Java中文乱码错误的总结
    Vim编辑器基本操作学习(一)
    hadoop map任务Combiner被调用的源码逻辑简要分析
  • 原文地址:https://www.cnblogs.com/woaielf/p/5805703.html
Copyright © 2011-2022 走看看