データサイエンス100本ノックで勉強(4)

前回に引き続きSQLPythonでデータサイエンス100本ノック進めていきます。

github.com

S-004: レシート明細のテーブル(receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。
顧客ID(customer_id)が"CS018205000001"

SQLだと以下のようになります。

select sales_ymd, customer_id, product_cd,amount
from receipt
where customer_id = 'CS018205000001'

f:id:JunpeiNakasone:20220125064001p:plain

Pythonだと以下のようになります。

df_receipt[['sales_ymd','customer_id','product_cd','amount']]\
.query('customer_id=="CS018205000001"')

f:id:JunpeiNakasone:20220125064255p:plain

query関数のドキュメントはこちらになります。

pandas.pydata.org

S-005: レシート明細のテーブル(receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。
顧客ID(customer_id)が"CS018205000001" 売上金額(amount)が1,000以上

SQLだと以下のようになります。

select sales_ymd, customer_id, product_cd, amount from receipt
where customer_id = 'CS018205000001'
and amount >= 1000

f:id:JunpeiNakasone:20220125064829p:plain

Pythonだと以下のようになります。

df_receipt[['sales_ymd','customer_id','product_cd','amount']]\
.query('customer_id=="CS018205000001" & amount >= 1000')

f:id:JunpeiNakasone:20220125064938p:plain

SQLのWhereで書く内容はquery関数内にまとめる感じになるような印象です。