前回に引き続きSQLとPythonでデータサイエンス100本ノック進めていきます。
S-007: レシート明細のテーブル(receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。
顧客ID(customer_id)が"CS018205000001" 売上金額(amount)が1,000以上2,000以下
SQLだと以下のようになります。
%%sql select sales_ymd, customer_id, product_cd, amount from receipt where customer_id = 'CS018205000001' and amount between 1000 and 2000
Pythonだと以下のようになります。
df_receipt[['sales_ymd','customer_id','product_cd','amount']]\ .query('customer_id == "CS018205000001" & 1000 <= amount <= 2000')
SQLのbetweenはquery関数内で「最小値 <= カラム名 <=最大値」という感じで書けるようです。
S-008: レシート明細テーブル(receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。
顧客ID(customer_id)が"CS018205000001" 商品コード(product_cd)が"P071401019"以外
SQLだと以下のようになります。
%%sql select sales_ymd, customer_id, product_cd, amount from receipt where customer_id = 'CS018205000001' and product_cd != 'P071401019'
Pythonだと以下のようになります。
df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']] \ .query('customer_id == "CS018205000001" & product_cd != "P071401019"')