Python 3——pandasのDataFrame(.ix.loc.iloc)データを取るピット~
博主辛苦码出滴~,才疏学浅,如果有错误请指正,未经博主许可转载.
pandasはデータ処理で最もよく使われるツールの一つで、データFrame全体のデータを使う必要はなく、それぞれの行や列を取りたい場合があります.ix .loc .ilocで実現しますが、この3つは使用時に特に以下の状況に注意してください.データのindexはデフォルト値、すなわち0,1,...... この場合dataを用いる.ix[0:n,カラム名または数値]またはdata.loc[0:n,カラム名]データを取得する場合、index=nというカラムを取得できます.この場合、0:nは下付きではなくindexの名前を指すからです.データには及ばないiloc[0:n,数値またはdata.columns="列名"]は、index=n-1の前のn行のみを取得できます.データのindexが指定する名前の値ix[0:n,カラム名または数値]データを取得するときdata.iloc[0:n,数字またはdata.columns="列名"]と同様にindex=nという列は取れません.このとき0:nは下付きを指し、前のn行しか取れないからです. この時点data.loc[0:n,カラム名]は使用できません.対応するindexで指定した値を書くべきです.
総じて言えば、どの方法が使う慣用はどれを使うのか、注意しなければならない.ixと.locの穴、以下は私が自分の使用状況に基づいてまとめたものです.
方法
適用状況
.ix
列数が多い場合、取りたい列が分散している場合に適用されます.複雑なindex値があり、行数が多い場合は、取りたい行が分散している場合にも適用されます.
.loc
列数が多い場合、取りたい列が分散している場合に適用されます.単純なindex値があり、行数が多い場合は、取りたい行が分散している場合にも適用されます.
.iloc
行列の下に値を付ける場合に適用
pandasはデータ処理で最もよく使われるツールの一つで、データFrame全体のデータを使う必要はなく、それぞれの行や列を取りたい場合があります.ix .loc .ilocで実現しますが、この3つは使用時に特に以下の状況に注意してください.
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(0, 25).reshape(5, 5), columns=list('abcde'))
print('
', data)
print('
.ix ')
print(data.ix[0:3, data.columns != 'b']) # :index 0:3 3
print('
.loc ')
print(data.loc[0:3, data.columns != 'b']) # :index 0:3 3
print('
.iloc ')
print(data.iloc[0:3, data.columns != 'b']) # 0:3 3
a b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
4 20 21 22 23 24
.ix
a c d e
0 0 2 3 4
1 5 7 8 9
2 10 12 13 14
3 15 17 18 19
.loc
a c d e
0 0 2 3 4
1 5 7 8 9
2 10 12 13 14
3 15 17 18 19
.iloc
a c d e
0 0 2 3 4
1 5 7 8 9
2 10 12 13 14
data = pd.DataFrame(np.arange(0, 25).reshape(5, 5), columns=list('abcde'), index=list('ABCDE'))
print('
', data)
print('
.ix ')
print(data.ix[0:3, 1]) # :index 0:3 3
print('
.loc ')
print(data.loc[['A', 'B'], data.columns == 'b']) # : index
print('
.iloc ')
print(data.iloc[0:3, 1]) # 0:3 3
a b c d e
A 0 1 2 3 4
B 5 6 7 8 9
C 10 11 12 13 14
D 15 16 17 18 19
E 20 21 22 23 24
.ix
b
A 1
B 6
C 11
.loc
b
A 1
B 6
.iloc
b
A 1
B 6
C 11
総じて言えば、どの方法が使う慣用はどれを使うのか、注意しなければならない.ixと.locの穴、以下は私が自分の使用状況に基づいてまとめたものです.
方法
適用状況
.ix
列数が多い場合、取りたい列が分散している場合に適用されます.複雑なindex値があり、行数が多い場合は、取りたい行が分散している場合にも適用されます.
.loc
列数が多い場合、取りたい列が分散している場合に適用されます.単純なindex値があり、行数が多い場合は、取りたい行が分散している場合にも適用されます.
.iloc
行列の下に値を付ける場合に適用