美文网首页
数据筛选总结

数据筛选总结

作者: YoungDou | 来源:发表于2020-05-27 20:55 被阅读0次

    数据处理一直在做,但是每次用时,总感觉很陌生,所以在此记录下来。
    这里假定数据不存在异常空缺的情况。这里只记录常用参数。

    1.去重处理
    data.drop_duplicates(subset, keep)
    

    subset指在去重中,考虑哪些列中重复的数据。比如subset=["列名1","列名2"]
    keep指保留那一条重复数据。可选值fist,last,False(删除所有重复数据)

    去重后,需要重置索引

    data.reset_index(drop=True, inplace=True) 删除原始索引列
    
    2.索引筛选

    通过列名(索引)、列号(行号)进行选取,所以衍生出了不同操作函数。

    loc函数

    使用索引与列名,两个参数分别对应行和列。如果未指定index,使用默认的。

    import pandas as pd
    import numpy as np
    df=pd.DataFrame(np.arange(16).reshape(4,4),columns=list('abcd'),index=list('ABCD'))
    print(df)
        a   b   c   d
    A   0   1   2   3
    B   4   5   6   7
    C   8   9  10  11
    D  12  13  14  15
    print(df.loc['A','b']) #选值
    1
    print(df.loc[['A','B']]) #选行
       a  b  c  d
    A  0  1  2  3
    B  4  5  6  7
    print(df.loc[:,['a','b']]) #选列
        a   b
    A   0   1
    B   4   5
    C   8   9
    D  12  13
    print(df.loc[['A','B'],['a','b']]) #选符合对应行列数据
       a  b
    A  0  1
    B  4  5
    
    iloc函数

    使用行号列号进行选取,用法与loc没有多大差别。需要注意的是,行号与索引的区别,索引进行选取后不会变化。

    ix函数

    混合索引,这里的混合指行列参数不局限于只用行号或者索引(列名或者列号)。即iloc与loc的混合体。
    但是,需要注意的是,这样的非法混合

    print(df.ix[[0,'B']]) #要么是['A','B'],或者[0:2,:]
         a    b    c    d
    0  NaN  NaN  NaN  NaN
    B  4.0  5.0  6.0  7.0
    
    at/iat函数

    使用index与行号进行快速取值

    print(df.iat[0,1])
    1
    print(df.iat['A','b'])
    1
    
    3.筛选

    常见的操作,使用关系运算符

    print(df['a'])
    A     0
    B     4
    C     8
    D    12
    print(df[['a','b']])
        a   b
    A   0   1
    B   4   5
    C   8   9
    D  12  13
    print(df[df['a']>4])
        a   b   c   d
    C   8   9  10  11
    D  12  13  14  15
    print(df[['a','b']][df['a']>4]) #指定了列名
        a   b
    C   8   9
    D  12  13
    

    使用isin函数根据特定值筛选记录

    print(df[(df.a.isin([4, 8]))&(df.b.isin([5,]))])
       a  b  c  d
    B  4  5  6  7
    

    这里还有一个复杂的做法实现选取特定行

        user_cols = [x for i, x in enumerate(data.index) if
                data.iat[i, 0] not in list]
        data.drop(user_cols, axis=0, inplace=True)
    

    相关文章

      网友评论

          本文标题:数据筛选总结

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