Python での iloc と loc の使用
最近、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 つずつ照合します. 理解できない友人がいる場合は、コメント領域で対話を歓迎します.
- 1行目から2行目、1列目から3列目までの値を取得したい場合:
x = data.loc['a':'b','A':'C']
print(x)
結果は次のとおりです。
A B C
a 1 2 3
b 7 8 9
- 最初の 2 行のすべての列のデータを取得する必要がある場合:
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
- 2 列目から 3 列目までのすべての行のデータを取得する必要がある場合:
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
- 間隔の行と列にインデックスを付ける場合:
たとえば、2 行目と 4 行目、および 1 列目と 4 列目の値を取得します。
x=data.loc[['b','d'],['A','D']]
print(x)
結果は次のとおりです。
A D
b 7 10
d 19 22
5. 条件に従ってインデックスを作成します。たとえば、19 より大きく、3 列目と 5 列目にある列 A の値を取得します。
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行目から2行目、1列目から3列目までの値を取得したい場合:
x = data.iloc[0:2,0:3]
print(x)
結果は次のとおりです。
A B C
a 1 2 3
b 7 8 9
- 最初の 2 行のすべての列のデータを取得する必要がある場合:
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
- 2 列目から 3 列目までのすべての行のデータを取得する必要がある場合:
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
- 間隔の行と列にインデックスを付ける場合:
たとえば、2 行目と 4 行目、および 1 列目と 4 列目の値を取得します。
x=data.iloc[[1,3],[0,3]]
print(x)
結果は次のとおりです。
A D
b 7 10
d 19 22
5. 条件に従ってインデックスを作成します。たとえば、19 より大きく、3 列目と 5 列目にある列 A の値を取得します。
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[インデックスを作成する行、インデックスを作成する列]