DataFrameの特定の行や列のデータを取得しよう
今までDataFrameへのデータの入出力をまとめてきました。
ここからは、特定の行や列のデータの取得を行ってみたいと思います。
データの取得方法は以下の通り
- iloc(インデックスの位置を使う)
- loc(ラベル名を使う)
など...
下準備・・・その前に
まずはいつも通り、DataFrameの準備をします。
今回のdfにはインデックス値とラベルの違いがわかりやすいように
インデックス側にもラベルをつけておきたいと思います。
- そもそもインデックスラベルとインデックス値との違いはなに?
dfのイメージ図
name | age | add | |
---|---|---|---|
one | aaa | 18 | Tokyo |
two | bbb | 20 | Osaka |
three | ccc | 22 | Nagoya |
例えば、"Tokyo"の場所がどこにあるかを聞かれたとします。
1行3列目
こちらは、インデックスの位置から"Tokyo"の場所を指定しています。
このような形でデータの取得を行う場合は ilocをつかいます。"one" 行 ”add" 列
こちらは、インデックスラベル名から"Tokyo"の場所を指定しています。
このような形でデータの取得を行う場合はlocを使います。
このような表現の仕方があるかと思います。
下準備
dfの準備をします。
今回はindexラベルも追加で準備します。
import pandas as pd #df用 data = {"name":["aaa","bbb","ccc"],"age":["18","20","22"],"add":["Tokyo","Osaka","Nagoya"]} #dfのindexラベル index_label = ["one","two","three"] #dfにdataをいれる df = pd.DataFrame(data,index = index_label )
指定したデータの取得をやってみよう
- まずはiloc()を使って"Tokyo"を取得してみよう。
df.iloc[0,2]
結果:Tokyo
注意点
インデックス値は1からスタートではなく、0からスタートします。
例:"aaa"はilocで指定する場合は[0,0]となります。
- 次にloc()を使って”Tokyo"を取得してみよう
df.loc["one","add"]
結果:Tokyo
- "add"行すべてをiloc()を使って取得してみよう。
df.iloc[:,2]
結果:
add | |
---|---|
one | Tokyo |
two | Osaka |
three | Nagoya |
- "add"行全てをloc()を使って取得してみよう。
df.loc[:,"add"]
結果:
add | |
---|---|
one | Tokyo |
two | Osaka |
three | Nagoya |
- aaaさんのデータをiloc()を使って取得してみよう。
df.iloc[0]
結果:
name | age | add | |
---|---|---|---|
one | aaa | 18 | Tokyo |
- aaaさんのデータをloc()を使って取得してみよう。
df.loc["one"]
結果:
name | age | add | |
---|---|---|---|
one | aaa | 18 | Tokyo |
まとめ
iloc()、loc()のどちらを使っても同じデータを取得することができます。
プログラムを行っている際に、使いやすいほうで使ってみてください。
<最終更新日:2021/08/19>
2021/08/19 投稿