らふのプログラミングメモ

プログラミングメモです。

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 投稿