Python – 4-3. pandas(DataFrame)参照
4. データの参照
import pandas as pd
df[]の中に与える値の種類によって取得できる値の種類が異なる
- 列:文字列('val’)、リスト['key’,’val’]
- 行:スライス(1:3)
4-1. 列名指定
リスト・文字列を使用した列の参照
df = pd.DataFrame([['a', 10], ['b', 20], ['c', 30], ['d', 40], ['e', 50], ['f', 60]], columns=['key', 'val'])
key列のみ取得
列名は文字列で指定
>>> df['key'] 0 a 1 b 2 c 3 d 4 e 5 f Name: key, dtype: object
key, val列のみ取得(boolIndex)
複数の列名はリストで指定
>>> df[['key', 'val']] key val 0 a 10 1 b 20 2 c 30 3 d 40 4 e 50 5 f 60
key, val列のみ取得(loc)
>>> df.loc[:, ['key', 'val']] key val 0 a 10 1 b 20 2 c 30 3 d 40 4 e 50 5 f 60
val列のみ取得(iloc)
>>> df.iloc[:, 1] 0 10 1 20 2 30 3 40 4 50 5 60 Name: val, dtype: int64
4-2. 行指定
スライスを使用した行の参照
1行目のみ取得
スライスに与える値はインデックスを示す。後の値(下記の例で言う"1″のインデックスを持つ行)は含まない。
>>> df[0:1] key val 0 a 10
2行目以降を取得
>>> df.loc[1:, :] key val 1 b 20 2 c 30 3 d 40 4 e 50 5 f 60
1行目と2行目を取得
>>> df.loc[[0,1], :] key val 0 a 10 1 b 20
2行目のみ取得
>>> df.iloc[1, :] key b val 20 Name: 1, dtype: object
4-3. 値参照
行・列の双方を指定した値の取得(2行目のval列の値を取得)
>>> df[1:2]['val'] ==> 1 20 ==> Name: val, dtype: int64
2行目のkey列の値
>>> df.at[1, 'key'] 'b'
2行目のval列の値
>>> df.at[1, 'val'] 20
2行目の2列目(val)列の値
>>> df.iat[1, 1] 20
3行目の1列目(val)列の値
>>> df.iat[2, 0] 'c'
エラーとなる指定の仕方
print(df[1,2]) print(df[[1,2]]) print(df[1]) print(df['key','val'])
4-4. 先頭行と末尾行の取得
先頭5行取得
df.head() ==> key val ==> 0 a 10 ==> 1 b 20 ==> 2 c 30 ==> 3 d 40 ==> 4 e 50
先頭2行取得
df.head(2) ==> key val ==> key val ==> 0 a 10 ==> 1 b 20
末尾5行取得
df.tail() ==> key val ==> 1 b 20 ==> 2 c 30 ==> 3 d 40 ==> 4 e 50 ==> 5 f 60
4-5. 条件によるデータの抽出
BoolIndexによる取得
df[df['val']==20] ==> key val ==> 1 b 20 ※「df['val']==20」部分だけだと、Key=2の行だけTrue、それ以外の行はFalseとなり、結果は以下の通り。 print(df['val']==2) ==> 0 False ==> 1 True ==> 2 False ==> 3 False ==> 4 False ==> 5 False ==> Name: val, dtype: bool そのため、TrueであるIndex=1の行だけ抽出される
文字列の場合も、同様に下記のような結果が取得される
df[df['key']=='c'] ==> key val ==> 2 c 30
最近のコメント