python中iloc和loc的用法

  • loc:标签索引
  • iloc:位置索引
  • 近期学习到了loc和iloc的切片用法,发现用法实在是很多,所以用一个简单的例子进行总结用法,期间也借鉴了大量笔记,如果有错误的地方,期待小伙伴们评论区指正。
    pandas以类似字典的方式来获取某一列的值。
    数据data.csv分布如下:

    查看数据:

    import pandas as pd
    
    data = pd.read_csv('./data.csv',index_col=0,encoding='gb2312')
    print(data)
    print(data.shape)
    index = data.index
    col = data.columns
    print(index)
    print(col)

    结果如下:

       A   B   C   D   E   F
    a   1   2   3   4   5   6
    b   7   8   9  10  11  12
    c  13  14  15  16  17  18
    d  19  20  21  22  23  24
    e  25  26  27  28  29  30
    f  31  32  33  34  35  36
    g  37  38  39  40  41  42
    h  43  44  45  46  47  48
    (8, 6)
    Index(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], dtype='object')
    Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

    可以看出index为列索引标签,columns为行索引标签,此时该矩阵为8*6的一个矩阵。

    loc:标签索引

    也就是采用行列标签来进行索引
    为了便于理解,我们将loc和iloc举的例子一一对应,如果有不懂的小伙伴欢迎评论区互动。

    1. 当我们想获取第一行到第二行,第一列到第三列的数值时:
    x = data.loc['a':'b','A':'C']
    print(x)

    结果如下:

       A  B  C
    a  1  2  3
    b  7  8  9
    1. 当我们需要获取前两行所有列的数据时:
    x = data.loc['a':'b',:]
    print(x)

    结果如下:

       A  B  C   D   E   F
    a  1  2  3   4   5   6
    b  7  8  9  10  11  12
    1. 当我们需要获取第二列到第三列所有行的数据时:
    x = data.loc[:,'B':'C']
    print(x)

    结果如下:

        B   C
    a   2   3
    b   8   9
    c  14  15
    d  20  21
    e  26  27
    f  32  33
    g  38  39
    h  44  45
    1. 如果想要索引间隔的行和列:
      例如获取第二行和第四行且位于第一列和第四列的数值
    x=data.loc[['b','d'],['A','D']]
    print(x)

    结果如下:

        A   D
    b   7  10
    d  19  22

    5.按照条件进行索引,例如获取A列中数值大于19,同时位于第三列和第五列的数值:

    x=data.loc[data['A'] > 19, ['C', 'E']]
    print(x)

    结果如下:

        C   E
    e  27  29
    f  33  35
    g  39  41
    h  45  47

    iloc:位置索引

    1. 当我们想获取第一行到第二行,第一列到第三列的数值时:
    x = data.iloc[0:2,0:3]
    print(x)

    结果如下:

       A  B  C
    a  1  2  3
    b  7  8  9
    1. 当我们需要获取前两行所有列的数据时:
    x = data.iloc[0:2,:]
    print(x)

    结果如下:

       A  B  C   D   E   F
    a  1  2  3   4   5   6
    b  7  8  9  10  11  12
    1. 当我们需要获取第二列到第三列所有行的数据时:
    x = data.iloc[:,1:3]
    print(x)

    结果如下:

        B   C
    a   2   3
    b   8   9
    c  14  15
    d  20  21
    e  26  27
    f  32  33
    g  38  39
    h  44  45
    1. 如果想要索引间隔的行和列:
      例如获取第二行和第四行且位于第一列和第四列的数值
    x=data.iloc[[1,3],[0,3]]
    print(x)

    结果如下:

        A   D
    b   7  10
    d  19  22

    5.按照条件进行索引,例如获取A列中数值大于19,同时位于第三列和第五列的数值:

    x=data.iloc[(data['A'] > 19).values, [2, 4]]
    print(x)

    结果如下:

        C   E
    e  27  29
    f  33  35
    g  39  41
    h  45  47

    总结: 所以我们可以总结得到loc和iloc的用法,data.loc[想要索引的行标签,想要索引的列标签]data.iloc[想要索引的行,想要索引的列]

    物联沃分享整理
    物联沃-IOTWORD物联网 » python中iloc和loc的用法

    发表评论