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属性即可访问这些方法。








  • 相关阅读:
    spring mvc给参数起别名
    聊聊分布式定时任务中间件架构及其实现--转
    Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
    终端安全工具 gartner 排名
    When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向
    DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
    DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
    DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
    Data Mining and Machine Learning in Cybersecurity PDF
    ES failed to notify ClusterStateListener java.lang.IllegalStateException: environment is not locked
  • 原文地址:https://www.cnblogs.com/woaielf/p/5805703.html
Copyright © 2011-2022 走看看