Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。

データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(58問目~62問目:データ変換編)

AkimasaKajitani
17 - Castor
17 - Castor

一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第11回目は58問目~62問目を一つにまとめてみました。今回はデータ変換処理中心の問題です。

 

  • P-058: 顧客データ(customer.csv)の性別コード(gender_cd)をダミー変数化し、顧客ID(customer_id)とともに10件表示せよ。

    ※レコードの順序は、元の順序を保持すること
    ※新しく作成されるフィールド名は、「gender_cd_」に値を組み合わせたものとすること

  • P-059: レシート明細データ(receipt.csv)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を平均0、標準偏差1に標準化して顧客ID、売上金額合計とともに10件表示せよ。標準化に使用する標準偏差は、分散の平方根、もしくは不偏分散の平方根のどちらでも良いものとする。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

    ※分散の平方根の標準偏差=母集団の標準偏差(nで割る)
    ※不偏分散の平方根=不偏標準偏差(n-1で割る)
    ※出力は、フィールド名をstd_amountとし、customer_idの昇順とすること

  • P-060: レシート明細データ(receipt.csv)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を最小値0、最大値1に正規化して顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

    ※出力は、フィールド名をscale_amountとし、customer_idの昇順とすること

  • P-061: レシート明細データ(receipt.csv)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を常用対数化(底10)して顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

    ※出力は、フィールド名をlog_amountとし、customer_idの昇順とすること

  • P-062: レシート明細データ(receipt.csv)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、売上金額合計を自然対数化(底e)して顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。

    ※出力は、フィールド名をlog_amountとし、customer_idの昇順とすること

 

解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。

 

solutionファイルは次回添付します。

 

添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。

 

前回:データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(52問目~57問目:コード化編)

6件の返信6
DaisukeTsuchiya
パルサー

ありがとうございます。ヒントを見ながらなんとかできました。

 

スポイラ
標準偏差は手を抜いているので完全一致はしていません。

キャプチャ.JPG
Yoshiro_Fujimori
オーロラ

回答します。

(.yxzpにパッケージするとなぜか添付できないので、.yxmdで添付します)

 

59問目

 母集団の標準偏差の計算結果がExpect Equalツールで一致しませんが

 解答データとの差が 1e-15未満のため、丸め誤差と判断してOKとしました。

 

61問目

 対数を計算する際に0.5を足す処理で「0の対数は定義により計算できないから」という理由は理解できるのですが
 「なぜ (0.01でも1でもなく) 0.5を使うのか」については、私が検索した範囲では「1よりは誤差がすくないから」という程度で

 積極的な理由は見つかりませんでした。

 この辺、詳しい方がいらっしゃれば教えてください。

 

 

スポイラ
58問目
フィールド名の命名でDynamic Rename ツールを使いましたが、もっと簡便な方法があった気がします。
Yoshiro_Fujimori_0-1664842884932.png

 

59問目
Yoshiro_Fujimori_1-1664843110399.png

60問目
SummaryツールとAppend Fieldツールの合わせ技は便利ですね。

Yoshiro_Fujimori_2-1664843194710.png

 

61問目
0.5足してから計算したら合いました。(上述)
Yoshiro_Fujimori_3-1664843407604.png

 

62問目
Yoshiro_Fujimori_4-1664844313494.png

 

 

 

AkimasaKajitani
17 - Castor
17 - Castor

できました!

 

スポイラ
正規化とか標準化とか全然使わなかったりするので、なかなか馴染みなかったりしますよね・・・。

AkimasaKajitani_0-1665208544134.png
AkimasaKajitani_1-1665208567246.png
AkimasaKajitani_2-1665208626825.png
AkimasaKajitani_3-1665208655259.png

 

 

 

 

AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん

 

はい、対数変換の際の足し込む値については特にこの値が良い、という絶対的なものはないようです。サンプル解答としては、オリジナルのデータサイエンス100本ノックの解答にあわせて0.5という値としています(最近のトレンド的に0.5とあったような気はしますが・・・)。

Masao
メテオール

だんだん難しくなってきました。。。

61、62問目は真数がゼロのときだけ別計算させたので解答例と一致しませんが、このような処理でOKなのか疑問が残ります。

スポイラ
Masao_0-1670028570678.png

 

yyokoyama
アステロイド

提出します。前半部分はほぼ解説丸写しですが、仕組みは概ね分かりました。