【問5~問8】データサイエンス100本ノック 解説

※アフィリエイト広告を利用しています。

ファイル
  1. はじめに
  2. 問5 レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・売上金額(amount)が1,000以上          
  3. 問6 レシート明細データフレーム「df_receipt」から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上数量(quantity)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・売上金額(amount)が1,000以上または売上数量(quantity)が5以上
  4. 問7 レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・売上金額(amount)が1,000以上2,000以下
  5. 問8 レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・商品コード(product_cd)が”P071401019″以外
  6. Pythonのコードやライブラリーについて知りたい
  7. 独学でデータ分析をしている方へ

はじめに

問5~問8のコードの説明を初心者や初学者でもわかるような方法でまとめました。

データサイエンス100本ノックのはじめ方は、以下のブログ記事を参考にしてください。

>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会

問5 レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・売上金額(amount)が1,000以上          

「(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定」する方法は、問2と同じで、df_receipt [[“①”, “②”, ・・・]]です。

また、「顧客ID(customer_id)が”CS018205000001″」の条件を満たすデータの抽出する方法は、問4と同じで、.query(‘customer_id == “CS018205000001”)ですね。

文字列内の文字列に引用符をつけることを忘れないように注意してください。

そして、今回は「売上金額(amount)が1,000以上」も満たさなければいけません。

2つの条件を両方満たすことを示す&を使用し、& amount >= 1000とします。

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

問6 レシート明細データフレーム「df_receipt」から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上数量(quantity)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・売上金額(amount)が1,000以上または売上数量(quantity)が5以上

「(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上数量(quantity)、売上金額(amount)の順に列を指定」する方法は、 df_receipt [[“①”, “②”, ・・・]]です。

また、「顧客ID(customer_id)が”CS018205000001″」の条件を満たすデータの抽出する方法は、.query(‘customer_id == “CS018205000001”ですね。

そして、今回は「売上金額(amount)が1,000以上」”又は”「売上数量(quantity)が5以上」も満たさなければいけません。

又は”の条件を示すを使用し、& amount >= 1000|quantity >= 5とします。

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

問7 レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・売上金額(amount)が1,000以上2,000以下

「(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定」する方法は、df_receipt[[“①”, “②”, ・・・]]ですね。

また、「顧客ID(customer_id)が”CS018205000001″」の条件を満たすデータの抽出する方法は、.query(‘customer_id == “CS018205000001”ですね。

そして、今回は「売上金額(amount)が1,000以上2,000以下」を満たさなければいけませんので、& 1000 <= amount <= 2000とします。

df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'quantity', 'amount']].query('customer_id == "CS018205000001" & 1000 <= amount <= 2000')

問8 レシート明細のデータフレーム(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。 ・顧客ID(customer_id)が”CS018205000001″ ・商品コード(product_cd)が”P071401019″以外

「(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定」する方法は、 df_receipt[[“①”, “②”, ・・・]]ですね。

また、「顧客ID(customer_id)が”CS018205000001″」の条件を満たすデータの抽出する方法は、.query(‘customer_id == “CS018205000001″‘ですね。

そして、今回は「(product_cd)が”P071401019″以外」です。

不一致は、!=を使用しますので、& product_cd != “P071401019”とします。

なお、not product_cd == “P071401019”としても、同じ結果がでます。

Pythonのコードやライブラリーについて知りたい

Pythonデータ分析よく使われている言語です。

Pythonコードの打ち方・ライブラリーについてもっと知りたいと思った方は、以下のブログ記事をご覧ください。

独学でデータ分析をしている方へ

機械学習データサイエンスデータ分析独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。