美文网首页
《利用python进行数据分析》第七章

《利用python进行数据分析》第七章

作者: 大美mixer | 来源:发表于2019-08-14 17:30 被阅读0次

    第七章 数据规整化:清理、转换、合并、重塑

    合并数据集

    • pandas.merge:根据键将不同DataFrame中的行连接起来。
    #默认做inner连接
    pandas.merge(df1, df2, on=['key_a', 'key_b',...], how='outer')
    # 两个对象列名不同可以分别指定
    pandas.merge(df1, df2, left_on='key1', right_on='key2', how='outer')
    # left_index=True或right_index=True说明索引应该被用作连接键
    pandas.merge(df1,df2,left_on='key',right_index=True)
    #对于层次化索引,必须以列表的形式指明用作合并键的多个列(注意对重复索引值的处理)
    #join方法
    df2.join(df1, how='outer')
    

    轴索引

    • pandas.concat:沿着一条轴将多个对象堆叠到一起
      默认axis=0(行),如果axis=1,则结果变成DataFrame。

    合并重叠数据

    #用df2填补df1的空值
    df1.combine_first(df2)
    

    重塑和轴向旋转

    重塑层次化索引

    • stack():列->行
    • unstack():行->列

    将“长格式”旋转为“宽格式”

    • pivot('行索引', '列索引', '填充数据的列名')

    数据转换

    移除重复数据

    • duplicated()
      默认用于全部列
    # 指定列
    data.drop_dulicates(['k1'])
    

    利用函数或映射进行数据转换

    data['新列名'] = data['food'].map(str.lower).map('字典名')
    # 或者使用函数
    data['food'].map(lamda x: 字典名[x.lower()])
    

    替换值

    • replace()
    data.replace(-999, np.nan)
    data.replace([-999, -1000], np.nan)
    

    重命名轴索引

    rename():创建数据集的转换板

    #可结合字典对象
    data.rename(index{'OHIO':'INDIANA'}
                ,columns={'three':'peekaboo'})
    #就地修改
    data.rename(inplace=True)
    

    离散化和面元划分

    连续数据常常被离散化或拆分为“面元”

    • cut
    ages = [20, 22, 25, 27, 21, 23, 37, 61, 45, 41, 32]
    bins = [18, 25, 35, 60, 100] #拆分点
    cats = pd.cut(ages, bins, right=True) #设置右边是闭端
    #自己设置面元名称
    cats = pd.cut(ages, bins, label=group_names)
    #若cut传入的是面元的数量,而不是具体的边界,则根据数据的最大最小值计算等长面元
    cats = pd.cut(ages, 4, percision=2)
    

    返回一个特殊的Categorical对象,有属性labels, levels, value_counts

    • qcut
      根据样本分位数对数据进行面元划分,使面元中具有相同数量的点。

    检测和过滤异常值

    • any
    #选出“超过3或-3的值”
    data[(np.abs(data) > 3).any(1)]
    #将值限制在[-3, 3]
    data[np.abs(data) > 3] = np.sign(data) * 3
    

    排列和随机采样

    • permutation
    df.take(np.random.permutation(len(df))[:3])
    

    计算指标/哑变量

    • get_dummies
      派生K列矩阵
    #给指标矩阵的列加上前缀,以可以跟其他数据合并
    dummies = pd.get_dummies(df['key'], prefix='key')
    结果:列'a'变成了'key_a',于是可以跟原矩阵df合并
    

    字符串操作

    字符串对象方法

    • split
      拆分
    • strip
      去掉空白符(包括换行符)
    • join
      将列表内的字符串用某个符号连接
    pieces = ['a', 'b', 'c']
    val = '::'.join(pieces)
    结果:'a::b::c'
    
    • in
      检测子串,或者用find或index
      注:若找不到字符串,index会引发异常,find返回-1
    • count
      返回指定子串的出现次数
    • replace
      替换、删除
    val.replace('::', '')
    

    正则表达式

    跳过

    pandas中矢量化的字符串函数

    相关文章

      网友评论

          本文标题:《利用python进行数据分析》第七章

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