Pandas——ix vs loc vs ilocの違い


Different Choices for Indexing
1.loc-行ラベルで行データをインデックスする
1.1 loc[1]インデックスが1行目であることを示す(indexは整数)
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = [0,1]
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc[1]
'''
a    4
b    5
c    6
'''

 
 
 
1.2 loc[‘d’]はインデックスが第’d’行であることを示す(indexは文字である)
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['d']
'''
a    1
b    2
c    3
'''

 
 
 
1.3カラムデータをインデックスしたい場合は、このようにするとエラーが発生します.
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['a']
'''
KeyError: 'the label [a] is not in the [index]'
'''

 
 
 
1.4 locは複数行のデータを取得できる
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['d':]
'''
   a  b  c
d  1  2  3
e  4  5  6
'''

 
 
 
1.5 loc拡張-行の列をインデックスする
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['d',['b','c']]
'''
b    2
c    3
'''

 
 
 
1,6 loc拡張-インデックスのあるカラム
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc[:,['c']]
'''
   c
d  3
e  6
'''

 
 
 
もちろん、ある列のデータを取得する最も直接的な方法はdfである.[カラムラベル]ですが、カラムラベルが不明な場合は、この方法でカラムデータを取得できます.なお、dataframeのインデックス[1:3]は、通常とは異なる1,2,3を含む.
2.iloc-行番号による行データの取得
2.1どのローを取得するか、そのローの数値を入力します.
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc[1]
'''
a    4
b    5
c    6
'''

 
 
 
2.2行タグインデックスによるエラーの報告
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.iloc['a']
'''
TypeError: cannot do label indexing on  with these indexers [a] of 
'''

 
 
 
2.3同じように行番号で複数行をインデックスできる
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.iloc[0:]
'''
   a  b  c
d  1  2  3
e  4  5  6
'''

 
 
 
2.4 ilocインデックス列データ
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.iloc[:,[1]]
'''
   b
d  2
e  5
'''

 
 
 
3.ix-最初の2つの混合インデックスを結合
3.1行番号索引による
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.ix[1]
'''
a    4
b    5
c    6
'''

 
 
 
3.2行ラベル索引
 
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.ix['e']
'''
a    4
b    5
c    6
'''

 
人工知能(Python、データ分析、機械学習、深さ学習、推薦システム、強化学習)を学びたいので、公衆番号AI派に来てみましょう!!