レッスン2 / 2問目

『loc, ilocによるデータの抽出』

このレッスンではloc,とilocを使ってデータを抽出する方法について学習していきましょう。

DataFrameとSeriesにはlocとilocという特定のデータを抜き出すことができる機能が用意されています。

属性説明
locラベルで行と列を指定
iloc数値で行と列の位置を指定

ではこれらlocとilocについて順番に使い方を見ていきましょう。

locによるデータの抽出

locを使うと、ラベル名でデータを絞り込むことができます。

loc[]は以下のように行と列を指定します。

df.loc[行, 列]

今回も例題には以下のデータを使います。

ファイルパス:"/sample5.csv"

身長 体重 性別 0 170 60 男 1 180 75 男 2 160 50 女 3 155 45 女 4 168 80 男

まずは"体重"の行を抜き出してみましょう。以下のようにdf.loc[]にラベルを指定します。

  1. df = pd.read_csv("/sample5.csv")
  2. print(df.loc[:, "体重"])    # ラベルを指定
1 75    # 列を抽出 2 50 3 45 4 80 Name: 体重, dtype: int64

ラベルを指定することにより"体重"の列データを抽出することができました。今回は行にコロンを指定していますが、コロンを指定した場合は全ての行を指定したことになります。

また、locとilocで抽出した一次元の行と列はSeriesオブジェクトとなります。


では次は下記赤枠の行を抜き出してみましょう。

身長 体重 性別 0 170 60 男 1 180 75 男 2 160 50 女 3 155 45 女 4 168 80 男

行を抜き出すには以下のように行に行ラベルを指定し、列にはコロンを指定します。

  1. print(df.loc[3, :])    # 行ラベルを指定
身長 155    # 行を抽出 体重 45 性別 女 Name: 3, dtype: object

行を抽出することができました。

iloc

では次はilocを見ていきましょう。locではラベルを指定しましたが、ilocは数値で行と列の位置を指定します。

df.iloc[行, 列]

では下記データの"身長"の列データを抜き出してみましょう。

ファイルパス:"/sample5.csv"

身長 体重 性別 0 170 60 男 1 180 75 男 2 160 50 女 3 155 45 女 4 168 80 男

ilocで列データを抽出するには以下のように指定します。

  1. df = pd.read_csv("/sample5.csv")
  2. print(df.iloc[:, 0])    # "身長"の列を指定
0 170    # "身長"の列データを取得 1 180 2 160 3 155 4 168 Name: 身長, dtype: int64

ilocにより"身長"の列を取得することができました。


では次は下記赤枠の行を抜き出します。

身長 体重 性別 0 170 60 男 1 180 75 男 2 160 50 女 3 155 45 女 4 168 80 男

以下のように行にインデックス、列にコロンを指定します。

  1. print(df.iloc[4, :])    # ilocで行を指定
身長 168    # 行を抽出 体重 80 性別 男 Name: 4, dtype: object

ilocによりデータの5行目を抽出することができました。

スライスの指定

loc, ilocでは行・列をスライスで指定することでより細かな抽出を行うことができます。

身長体重性別
017060
118075
216050
315545
416880

上記赤枠部分をilocを使って抜き出してみましょう。以下のように行・列ともにスライスを指定します。

  1. df = pd.read_csv("/sample5.csv")
  2. print(df.iloc[0:4, 1:])    # 行・列をスライスで指定
体重 性別 0 60 男 1 75 男 2 50 女 3 45 女

上記のようにスライスを使うことでより細かな抽出を行うことができました。

まとめ

このレッスンではloc, ilocによりデータを抽出する方法について学習しました。

機械学習を行う際は、学習の前段階でデータを分ける必要があるのですが、その際にこれらloc, ilocはよく使いますのでここで押さえておきましょう。

では以下に内容をまとめます。

  • ilocはラベルで行と列を指定する
  • ilocは数値で行と列の位置を指定する

レッスンは以上となります。
演習課題にチャレンジしましょう。

Lesson1

df1には以下のデータが格納されています。

ファイルパス:"/sample5.csv"

身長体重性別
017060
118075
216050
315545
416880

上記データの"体重"と"性別"の列を抽出しdf2に代入してください。

なお、ilocとlocのどちらを使っていただいても構いません。

Lesson2

以下のデータを抽出しdf3に代入してください。

身長体重性別
017060
118075
216050
315545
416880

Last updated:2020/1/15

体重 性別
0  60  男
1  75  男
2  50  女
3  45  女
4  80  男
    身長  体重
0  170  60
1  180  75
2  160  50
3  155  45
  1. import pandas as pd

  2. df1 = pd.read_csv("/sample5.csv")


  3. # 1. 指定した行と列を抽出しdf2に代入してください。

  4. df2 = df1.loc[:,"体重":"性別"]
  5. print(df2)

  6. # 2. 指定した行と列を抽出しdf3に代入してください。

  7. df3 = df1.iloc[0:4, 0:2]
  8. print(df3)
main.py
設定
g
n
i
d
a
o
L