レッスン1 / 2問目

『真偽値による参照』

このレッスンでは真偽値による参照について学習していきましょう。

真偽値による参照とはデータフレームの中で特定の条件を満たしたデータを抽出することです。

ここでは以下の内容について見ていきます。

  1. 単一条件による参照
  2. 複数条件による参照

ではこれらについて順番に見ていきましょう。

単一条件による参照

まずは単一の条件を指定し、DataFrameを参照する方法を見ていきましょう。

単一の条件を指定するには以下のようにDataFrameオブジェクトに続けて角括弧を記述し、各括弧内に条件を指定します。

df[条件式]

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

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

『ある店舗における月毎の広告費、来店者数、売上のデータ』

広告費 来店者数 売上 1月 500000 150 2000000 2月 300000 100 1300000 3月 350000 130 1350000 4月 380000 115 1200000 5月 420000 130 1500000 6月 650000 180 1800000 7月 460000 150 1600000 8月 720000 180 2300000 9月 690000 200 2500000 10月 790000 230 2450000 11月 580000 180 2100000 12月 530000 150 1800000

ではこのデータから売上が180万円以上の月を参照してみましょう。

以下のようにdfに続けて条件を指定します。

  1. df = pd.read_csv("/sample6.csv")
  2. df.index = [str(i) + "月" for i in range(1, 13)]
  3. df2 = df[df["売上"] >= 1800000]    # 条件を指定
  4. print(df2)
広告費 来店者数 売上 1月 500000 150 2000000    # 売上が180万円以上の月を参照 6月 650000 180 1800000 8月 720000 180 2300000 9月 690000 200 2500000 10月 790000 230 2450000 11月 580000 180 2100000 12月 530000 150 1800000

売上が180万円以上の月を参照することができました。このように、Pandasでは簡単にデータを条件式で絞り込むことができます。

複数条件による参照

では次は複数条件を指定する方法について見ていきます。

DataFrameに複数の条件を指定するにはqueryメソッドを使います。以下のようにDataFrameオブジェクトに続けてqueryを記述し、queryに続けて条件式を複数指定します。

df.query(複数の条件式)

以下のデータを参照を複数条件で絞り込みます。

広告費 来店者数 売上 1月 500000 150 2000000 6月 650000 180 1800000 8月 720000 180 2300000 9月 690000 200 2500000 10月 790000 230 2450000 11月 580000 180 2100000 12月 530000 150 1800000

では上記のデータから広告費が60万円以下かつ売上が180万円以上のデータを参照してみましょう。

  1. df2 = df.query("広告費 <= 600000 & 売上 >= 1800000")    # 複数条件を指定
  2. print(df2)
広告費 来店者数 売上 1月 500000 150 2000000 11月 580000 180 2100000 12月 530000 150 1800000

上記のようにdf.query()内に条件を指定します。

これまでのif文などでは論理演算にand, or, notを使いましたが、Pandasではand, or, notではなく「&」「|」「~」を使います。

演算子意味
a & baかつb
a | baもしくはb
~ aaではない

では念のためもう一つ例題を見ていきましょう。

以下では来店者数が200以上もしくは売上が220万円以上のデータを参照してます。

  1. df2 = df.query("来店者数 >= 200 | 売上 >= 2200000")
  2. print(df2)
広告費 来店者数 売上 8月 720000 180 2300000 9月 690000 200 2500000 10月 790000 230 2450000

来店者数が200以上もしくは売上が220万円以上のデータを取得することができました。

queryは列ラベルの参照方法が少し特殊な点にも注意しましょう。

まとめ

このレッスンではデータを条件式で絞り込む方法について学習しました。

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

  • 条件を指定する場合はdf[条件式]
  • 複数条件を指定する場合はdf.query()
  • 論理演算子は「&」「|」「~」を使う

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

Lesson1

以下のデータが格納されたdfがあります。

以下dfから来店者数が200以上のデータを参照しdf2に代入してください。

広告費 来店者数 売上 1月 500000 150 2000000 2月 300000 100 1300000 3月 350000 130 1350000 4月 380000 115 1200000 5月 420000 130 1500000 6月 650000 180 1800000 7月 460000 150 1600000 8月 720000 180 2300000 9月 690000 200 2500000 10月 790000 230 2450000 11月 580000 180 2100000 12月 530000 150 1800000

Lesson2

dfから売上が1700000円以下のデータを参照しdf3に代入してください。

Lesson3

query関数を用いて広告費が500000円以上かつ売上が2000000円以下のデータを参照しdf4に代入してください。

Last updated:2019/11/9

広告費  来店者数       売上
9月   690000   200  2500000
10月  790000   230  2450000
        広告費  来店者数       売上
1月   500000   150  2000000
6月   650000   180  1800000
8月   720000   180  2300000
9月   690000   200  2500000
10月  790000   230  2450000
11月  580000   180  2100000
12月  530000   150  1800000
        広告費  来店者数       売上
1月   500000   150  2000000
6月   650000   180  1800000
12月  530000   150  1800000
  1. import pandas as pd

  2. df = pd.read_csv("/sample6.csv")
  3. df.index = [str(i) + "月" for i in range(1, 13)]

  4. # 1. 指定した条件のDataFrameをdf2に代入してください

  5. df2 = df[df["来店者数"] >= 200]
  6. print(df2)

  7. # 2. 指定した条件のDataFrameをd3に代入してください

  8. df3 = df[df["売上"] >= 1700000]
  9. print(df3)

  10. # 3. 指定した条件のDataFrameをd4に代入してください

  11. df4 = df.query("広告費 >= 500000 & 売上 <= 2000000")
  12. print(df4)
main.py
設定
g
n
i
d
a
o
L