一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第14回目は75問目~78問目を一つにまとめてみました。今回は外れ値抽出、ランダム抽出など抽出の問題です。
P-075: 顧客データ(customer.csv)からランダムに1%のデータを抽出し、先頭から10件表示せよ。
P-076: 顧客データ(customer.csv)から性別コード(gender_cd)の割合に基づきランダムに10%のデータを層化抽出し、性別コードごとに件数を集計せよ。
P-077: レシート明細データ(receipt.csv)の売上金額を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。なお、外れ値は売上金額合計を対数化したうえで平均と標準偏差を計算し、その平均から3σを超えて離れたものとする(自然対数と常用対数のどちらでも可)。結果は10件表示せよ。
※標準偏差は、ワークフローを簡略化するためn-1で割る標準偏差を使用すること
※スケール化(標準化)すること(フィールド名はscaleとする)
P-078: レシート明細データ(receipt.csv)の売上金額(amount)を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。なお、ここでは外れ値を第1四分位と第3四分位の差であるIQRを用いて、「第1四分位数-1.5×IQR」を下回るもの、または「第3四分位数+1.5×IQR」を超えるものとする。結果は10件表示せよ。
※結果はcustomer_idの昇順でソートすること
解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。
なお、今回は全体のバランスで問題数は少なめです。
solutionファイルは次回添付します。
添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。
前回:データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(68問目~74問目:計算・日時編)
回答します。
どうも .yxzp だと添付できないので、.yxmd で添付します。
76問目
当初、乱数生成してソート後に先頭10%をサンプルしましたが、Gender_cdでグループ化し先頭10%をサンプルしても同じ結果になりました。
(グループの構成比が変わらないので当然かも)
層化抽出したデータを使うという意味では、おそらく当初の方法のほうが適切なのでしょう。
77問目
解答と一致しないのですが、どこかにミスがあるのか、丸め誤差のせいなのかわかりません。
log_amount は小数第6位で四捨五入すると一致しますが、scale はだいぶ違ってしまっています。
Expect Equal (BETA) (452) Unexpected Value - Field:log_amount Row:1 Expected:16.3328040058233 Actual:16.3328039654845
Expect Equal (BETA) (452) Unexpected Value - Field:scale Row:1 Expected:7.96734230597917 Actual:7.96361103429295
78問目
できました!
しかし、yxzpが添付できないって謎ですね、、、会社のセキュリティの問題でしょうか??
そうでした。対数化の際のお作法を(前に話したのに)忘れていました。
ご指摘ありがとうございます。
添付できないのは、おそらく会社のセキュリティの問題と思われます。
customer.csv などが顧客情報の外部送信と認識されていると推測しています。
ウィークリーチャレンジでも時々あります。
@Yoshiro_Fujimori さん ファイル名まで見て動くとは、、、結構強力なセキュリティですね、、、今頃はそんなものもあるんですね・・・
実際に何をチェックされているかはわかりませんが(わかったらセキュリティの意味がないし)
たぶんファイル名ではなく
データの中身をみて人名や日付や金額が入っているとか
ファイルサイズがある程度以上大きいと「リスクが高い」と判断されるのではと想像しています。
@Yoshiro_Fujimori さん そこまで見られてるんですね、、、すごいですね、、、