レッスン1 / 2問目

『行・列指定によるデータの抽出』

このレッスンではDataFrameからデータを抽出する方法について学習していきましょう。

本レッスンでは以下の内容について見ていきます。

  1. 列指定によるデータの抽出
  2. 複数列の抽出
  3. 行指定によるデータの抽出
  4. 行・列指定による値の抽出

では順番に見ていきましょう。

列指定によるデータの抽出

まずは列を指定してデータを抽出する方法について見ていきましょう。

ここでは以下のデータを扱います。

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

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

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

それには以下のようにdf[]に列名を指定します。

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

列名の指定により"身長"の列データを抽出することができました。

複数列の抽出

また、リストで列名を指定することで複数の列を抽出することができます。

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

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

では上記の身長と性別を抜き出してみましょう。それには以下のようにリストで列名を指定します。

  1. df = pd.read_csv("/sample5.csv")
  2. print(df[["身長", "性別"]])    # リストで列名を指定
身長 性別 0 170 男 1 180 男 2 160 女 3 155 女 4 168 男

リスト指定により複数行が抽出されました。

行の抽出

では次は行を抜き出してみましょう。

行を抜き出す場合はdf[[]にスライスを指定します。

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

では上記の赤枠部分を抜き出してみましょう。

以下のように抜き出したい行をスライスで指定します。

  1. df = pd.read_csv("/sample5.csv")
  2. print(df[1:2])      # スライスを指定
身長 体重 性別 1 180 75 男     # 行を抽出

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

スライスではなく、例えば df[1] のように直接インデックスを指定した場合にはエラーとなりますので注意しましょう。

行・列指定による値の取得

次はDataFrameの中から特定の値を抽出する方法を見ていきましょう

特定の値を取り出すにはdf[列][インデックス]と指定します。ここでは以下の赤枠部分を抜き出してみましょう。

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

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

赤枠部分を抜き出すには以下のように列とインデックスを指定します。

  1. df = pd.read_csv("/sample5.csv")
  2. print(df["体重"][1])     # 列とインデックスを指定
75    # 特定の値を抽出

特定の値を抽出することができました。

行を抽出する際は df[スライス] のようにスライスで行を指定していましたが、上記のように特定の値を取得する場合はインデックスで行を直接指定するという点に注意してください。

実はdf[列]で列を取得した場合、その列はDataFrameではなくSeriesオブジェクトになります。そのため、上記のdf[列][インデックス]という指定はSeries[インデックス]という指定と同じ意味となります。そのため行を直接指定することができるというわけです。

まとめ

このレッスンでは列データの抽出、行データの抽出、値の抽出の3つの方法について学習しました。

要点を以下にまとめます。

  • 列を抽出する場合はdf[列]
  • 行を抽出する場合はdf[スライス]
  • 値を抽出する場合はdf[列][インデックス]

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

Lesson1

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

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

年齢 身長 体重 性別 0 10 170 60 男 1 15 180 75 男 2 13 160 50 女 3 18 155 45 女 4 16 168 80 男

上記df1から体重性別の列を抽出し、df2に代入してください。

なお、判定はdf2, df3, df4に代入された値を判定します。

Lesson2

df1から以下赤枠部分の行を抽出しdf3に代入してください。

年齢 身長 体重 性別 0 10 170 60 男 1 15 180 75 男 2 13 160 50 女 3 18 155 45 女 4 16 168 80 男

Lesson3

以下の赤枠部分の値を抽出しdf4に格納してください。

年齢 身長 体重 性別 0 10 170 60 男 1 15 180 75 男 2 13 160 50 女 3 18 155 45 女 4 16 168 80 男

Last updated:2020/2/29

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

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

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

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

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

  7. df3 = df1[2:3]
  8. print(df3)

  9. # 3. 指定した値を抽出し、df4に代入してください

  10. df4 = df1["体重"][3]
  11. print(df4)
main.py
設定
g
n
i
d
a
o
L