Pandasにおけるlocとiloc関数の使い方の詳細(ソース+インスタンス)


loc関数:行インデックス「Index」の具体的な値から行データ(Indexが「A」の行など)を取得します.
iloc関数:行番号による行データ(2行目のデータなど)の取得
本稿ではloc,ilocでよく見られる5つの使い方を示し,詳細なコードを添付する.
1.loc、ilocによる行データの抽出
import numpy as np
import pandas as pd
#    Dataframe
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))

In[1]: data
Out[1]: 
    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'  
In[2]: data.loc['a']
Out[2]:
A    0
B    1
C    2
D    3

#      ,   'a'       ,      
In[3]: data.iloc[0]
Out[3]:
A    0
B    1
C    2
D    3

2.loc、ilocによるカラムデータの抽出
In[4]:data.loc[:,['A']] # 'A'    ,        data.loc[:,['A','B']]
Out[4]: 
    A
a   0
b   4
c   8
d  12

In[5]:data.iloc[:,[0]] #  0    ,        data.iloc[:,[0,1]]
Out[5]: 
    A
a   0
b   4
c   8
d  12


3.loc、ilocによる指定行抽出、指定列データの抽出
In[6]:data.loc[['a','b'],['A','B']] #  index 'a','b',   'A','B'    
Out[6]: 
   A  B
a  0  1
b  4  5

In[7]:data.iloc[[0,1],[0,1]] #   0、1 , 0、1     
Out[7]: 
   A  B
a  0  1
b  4  5

 
4.loc、ilocによるすべてのデータの抽出
In[8]:data.loc[:,:] # A,B,C,D     
Out[8]: 
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15

In[9]:data.iloc[:,:] #  0,1,2,3     
Out[9]: 
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15

5.loc関数を用いて、あるデータからデータが存在する行を抽出する
In[10]: data.loc[data['A']==0] #  data  (    : A     0      )
Out[10]: 
   A  B  C  D
a  0  1  2  3

In[11]: data.loc[(data['A']==0)&(data['B']==2)] #  data  (      )
Out[11]: 
   A  B  C  D
a  0  1  2  3

また、以下のいくつかの書き方は、データが存在する行を抽出することもでき、5つ目の使い方と類似しており、補足としてのみ使用されます.
In[12]: data[data['A']==0] #dataframe  
In[13]: data[data['A'].isin([0])] #isin  
In[14]: data[(data['A']==0)&(data['B']==2)] #dataframe  
In[15]: data[(data['A'].isin([0]))&(data['B'].isin([2]))] #isin  

Out[15]: 
   A  B  C  D
a  0  1  2  3

loc関数を利用する時、indexが同時に、同じIndexをすべて抽出して、利点は:indexが人名で、データボックスがすべての人のデータであれば、私はある人の複数のデータを抽出して分析することができます;欠点は、indexが特定の意味を持たず、重複する場合、抽出されたデータはさらに処理する必要があり、利用可能である.reset_index()関数indexのリセット
同様に、atとiat関数は指定した行列の値を抽出することができ、詳細はブログ(DataFrameのat、iat関数の詳細)を参照してください.
最後に、このブログのlocとiloc関数は指定した行列データを抽出し、Dateframe指定した行列データを削除すると、ブロガーの以下のブログを参照することができます(ジャンプをクリック).
  • Drop関数とisin関数(DataFrame指定行列削除)
  • DataFrame抽出(削除)指定行列(isin関数、drop関数)