一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第18回目は89問目~92問目を一つにまとめてみました。今回は予測のためのデータ準備問題です。
P-089: 売上実績がある顧客を、予測モデル構築のため学習用データとテスト用データに分割したい。それぞれ8:2の割合でランダムにデータを分割せよ。
※全体のレコード数を「TotalCount」、学習データのレコード数を「Count」とし、学習データの割合を出力すること(フィールド名は「学習データ割合」とする)
P-090: レシート明細データ(receipt.csv)は2017年1月1日〜2019年10月31日までのデータを有している。売上金額(amount)を月次で集計し、学習用に12ヶ月、テスト用に6ヶ月の時系列モデル構築用データを3セット作成せよ。
P-091: 顧客データ(customer.csv)の各顧客に対し、売上実績がある顧客数と売上実績がない顧客数が1:1となるようにアンダーサンプリングで抽出せよ。
※売上実績がある顧客、ない顧客の状況を示すフィールド名を、is_buy_flagとし、売上実績あればYes、なければNoを格納すること
※解答は、最終的にYes、Noのカウントを出力すること
P-092: 顧客データ(customer.csv)の性別について、第三正規形へと正規化せよ。
※正規化後のテーブルは先頭から10件を抽出すること
解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。
solutionファイルは次回添付します。
添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。
回答します。
例によって.yxzpが添付できないため.yxmdを添付します。
90問目
91問目
92問目
Summaryツールの出力順が解答データと異なります。(Expected: {0, 9, 1}の順、Actual: {1, 9, 0}の順)
単純なキー順でもないし合わせ方がよくわからないのですが、使用上は実害はないのでそのままにしてあります。
できました。もう少しスマートにできそうですが…。