pandasノート(5)フィルタ機能-loc&iloc

14381 ワード

データフィルタリングでは、通常のインデックス(loc)、位置インデックス(iloc)などを使用して実現できます.

loc:行列インデックス名によるフィルタリング


関数フォーマット:df.loc([index],[column])indexをフィルタする必要がない場合は、コロン":"でビットを占める必要があります.
DataFrameの作成
import  numpy as np
import  pandas as pd
df = pd.DataFrame(np.arange(16).reshape((4,4)),index = list('abcd'),columns=['A','B','C','D'])
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

  • 単行検索
  • #  a 
    df.loc[['a'],]
    
    #  
    
        A	B	C	D
    a	0	1	2	3
    
  • 複数行検索
  • #  a,c 
    df.loc[['a','c'],]
    
    #  
    	A	B	C	D
    a	0	1	2	3
    c	8	9	10	11
    
  • 単列
  • を検索
    #  A 
    df.loc[:,['A']]
    
    #  
    	A
    a	0
    b	4
    c	8
    d	12
    
  • 複数の列を検索
  • #  A,C 
    df.loc[:,['A','C']]
    
    #  
    	A	C
    a	0	2
    b	4	6
    c	8	10
    d	12	14
    
  • 複数行の複数列を検索
  • #  a,c ,A,C 
    df.loc[['a','c'],['A','C']]
    
    #  
    
        A	C
    a	0	2
    c	8	10
    

    iloc:行列インデックスの位置に基づいてフィルタリング


    ilocの使い方はlocの使い方とほぼ同じで、indexをフィルタする必要がない場合も、同じようにコロン":"で占拠する必要があります.
  • 単行検索
  • #  1 
    df.iloc[[0],]
    
    #  
    
        A	B	C	D
    a	0	1	2	3
    
  • 複数行検索
  • #  1,3 
    df.iloc[[0,2],]
    
    #  
    	A	B	C	D
    a	0	1	2	3
    c	8	9	10	11
    
    
    #  1-2 
    df.iloc[0:2,]
    
    #  
        A	B	C	D
    a	0	1	2	3
    b	4	5	6	7
    
  • 単列
  • を検索
    #  1 
    df.iloc[:,[0]]
    
    #  
    	A
    a	0
    b	4
    c	8
    d	12
    
  • 複数の列を検索
  • #  1,3 
    df.iloc[:,[0,2]]
    
    #  
    	A	C
    a	0	2
    b	4	6
    c	8	10
    d	12	14
    
    
    #  1-2 
    df.iloc[:,0:2]
    
    #  
    
    	A	B
    a	0	1
    b	4	5
    c	8	9
    d	12	13
    
  • 複数行の複数列を検索
  • #  1-2 , 1-2 
    df.iloc[0:2,0:2]
    
    #  
    
       	A	B
    a	0	1
    b	4	5
    

    loc条件によるフィルタリング

  • 単列条件フィルタある列に基づいて条件を満たす行
  • をフィルタリングする.
    df.loc[df['A']==4,:]
    # , 
    df.loc[df['A']==4]
    
    #  
        A	B	C	D
    b	4	5	6	7
    
  • 複数列の条件フィルタリングある数列に基づいて条件を満たす行
  • をフィルタリングする.
    df.loc[(df['A']>2)&(df['B']<10)]
    #  df.loc[df['A']>2].loc[df['B']<10]
    
    
    #  
    	A	B	C	D
    b	4	5	6	7
    c	8	9	10	11
    
  • 行列フィルタは、必要に応じて条件を満たす行および列
  • をフィルタする.
    df.loc[df['A']>4,["A",'B','C']]
    
    #  
    	A	B	C
    c	8	9	10
    d	12	13	14