データサイエンス100本ノック関連記事リスト
1️⃣ はじめに
- この連載企画では、データサイエンス100本ノックをDockerとPython in Excelで実行する方法を比較しながらご紹介しています。📖Python in Excelとは?
Python in Excelは、Excel上で直接Pythonのコードを実行できる話題の新機能です。
- 2023年8月に、パブリックプレビュー版が発表されました。
- 現在は、Microsoftの一定のバージョン以降でMicrosoft 365 insidersプログラムに参加し「Beta Channel」を選択することで利用が可能です。
- Python in Excelでは、ExcelにPython実行環境である「Anaconda」が組み込まれています。
- 新しい関数である「PY」関数を使って、セルにPythonプログラムを書き込むと、クラウドでPythonプログラムを実行することができます。
- Python向けの各種ライブラリとして、Pandas や Matplotlib、seaborn を使えば、データの整形やグラフ化ができたり、scikit-learn を使用すれば機械学習やデータからの予測などの機能を利用できます。
- それでは早速、演習問題004 特定条件に合致する行を抽出(=、>、<)にチャレンジしてみましょう!
2️⃣ データサイエンス100本ノックの紹介
- データサイエンス100本ノックは、実践的でワクワクするような課題に取り組みながら、プログラミング、データ分析のスキルを楽しく習得することを目指した、データサイエンス初学者のための問題集です。📖「データサイエンス100本ノック(構造化データ加工編)」とは具体的に?
データサイエンス初学者を対象に、データの加工・集計、統計学や機械学習を駆使したモデリングの前処理等を学べるように、データと実行環境構築スクリプト、演習問題がワンセットになったコンテンツのことです。「データサイエンス100本ノック(構造化データ加工編)」 概要
- アクセス:GitHub(無料公開)
- 実行環境のサポート言語:SQL、Python、R
- 演習問題:各言語の設問100問
- 解答例:各設問に対する解答例のファイルを用意
3️⃣ Docker上で実行
- まず、Dockerコンテナ上で立ち上げたJupyter環境で実行していきます。
演習問題004
- レシート明細データ(
df_receipt
)から売上年月日(sales_ymd
)、顧客ID(customer_id
)、商品コード(product_cd
)、売上金額(amount
)の順に列を指定し、以下の条件を満たすデータを抽出せよ。- 顧客ID(
customer_id
)が"CS018205000001"
- 顧客ID(
📎
絞り込みを適切な条件で行うことで、大量のデータを集計する場合の集計時間を抑えることができます。
- 一番初めのセルでレシート明細データのCSVファイルを
df_receipt
という変数に読み込む処理をしています。
- 読み込んだ
df_receipt
から表示する列をリストで指定します。df_receipt
に続けて角括弧を入力し、複数の列をリストで指定します。df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']]
- 複数の列を指定してデータを出力できました。
- 続いて、比較演算子を使って条件指定を行います。
Pandas
の場合、データフレームの項目に対し、比較演算子による条件指定を行うことで、True/False
の配列を生成することができます。df = df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']] df['customer_id'] == 'CS018205000001'
一旦、出力されたデータフレームを
df
に格納。df
のcustomer_id
がCS018205000001
の条件と一致するか==
を使って判定します。
- 条件と一致した行のみ
True
となります。 - そして、データフレームの
df
の中で条件式を書くことで、True
の項目でデータを絞り込むことができます。df = df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']] df[df['customer_id'] == 'CS018205000001']
指定した条件でデータを絞り込み表示することができました。
次はPython in Excelで確認します。
4️⃣ Python in Excelで実行
- レシート明細のCSVデータをExcelで開いています。
- データのダウンロードの方法はこちらの動画をご覧ください。
- 数式バーからPythonの挿入を選択します。
- Python in Excelを使って
DataFrame
にデータを格納するにはセル範囲を選択します。列を指定するか、または表のセル範囲を指定します。
- 指定した範囲を
df_receipt
という変数に格納します。df_receipt = xl("A:I", headers=True)
- 先ほどと同様に
df_receipt
に対してリストで表示したい列名を入力します。df_receipt = xl("A:I", headers=True) df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']]
Ctrl + Enter
で実行。表示がDataFrame
に変わりましたら、数式バー隣のプルダウンメニューをクリック、PythonオブジェクトからExcelの値に変更します。
- 値が出力されました。
- 続いて先程とは別の方法として、Pandasの
query
メソッドを使用して絞り込みを行います。 query
メソッドを使用すると、データフレーム内のデータに対して、文字列ベースのクエリ式を使って条件を指定し、その条件に一致するデータのみを抽出することができます。- 顧客ID(
customer_id
)の値を文字列で指定します。条件式全体をシングルクォーテーションで囲み、検索する文字列をダブルクォーテーションで囲みます。df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']]. \ query('customer_id == "CS018205000001"')
- なお、逆に条件式全体をダブルクォーテーションで囲み、検索文字列をシングルクォーテーションで囲むこともできます。
df_receipt[['sales_ymd', 'customer_id', 'product_cd', 'amount']]. \ query("customer_id == 'CS018205000001'")
Ctrl + Enter
で実行します。
条件で絞り込みしたデータが出力されました。
以上で、データサイエンス100本ノック演習問題004 特定条件に合致する行を抽出(=、>、<)をクリアしました。
5️⃣ おわりに
- 最後までお読みいただきありがとうございます!
- この記事へのご質問やアドバイスがありましたら、ぜひコメントもお待ちしております。
- またXでもVBA、Pythonに関するアウトプットをしていますので、🔽フォローいただけますと幸いです😆