データサイエンス100本ノックをAlteryxで。35日目(解答)

100本ノック

このページは解答編です。

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-035: レシート明細データ(receipt.csv)に対し、顧客ID(customer_id)ごとに売上金額(amount)を合計して全顧客の平均を求め、平均以上に買い物をしている顧客を抽出し、10件表示せよ。ただし、顧客IDが”Z”から始まるものは非会員を表すため、除外して計算すること。

※出力結果は、顧客ID(customer_id)の昇順で並び替えて出力してください(Alteryxオリジナル条件)

解答ワークフローは以下のようになります。

34問目がベースとなっている問題で、平均を求めるところまでは34問目と同様です。その後、平均以上に買い物をしている顧客を抽出ということなので、求めた平均を各顧客の合計金額と比較する必要があります。

まず34問目の内容まで進めていきましょう。

まず、合計、平均を計算するということなので、データ型を変える必要があります。いつものようにセレクトツールで型を変えていきましょう。ついでに不要な項目を削除します。

次に、customer_idが「Z」で始まるレコードは除外して計算するとのことなので、フィルターツールを使います。これも以前の問題(10日目)で経験済みかと思いますが、除外の場合はカスタムフィルターにてStartsWith関数を使います。単にStartsWithだと「始まるもの」、ということになるので、先頭に「NOT」もしくは「!」を付けます。

!StartsWith([customer_id], "Z")

次に集計ツールを使ってcustomer_idでグループ化し、amountの平均を取ります。設定は以下の通りです。

customer_idを選択し、追加ボタンからグループ化を選択します。次に、amountを選択し、追加ボタンから合計を選択します。

これで、顧客ID(customer_id)ごとに売上金額(amount)の合計が得られます。あとは、全体の平均を取ります。設定は以下のような形となり、「Sum_amount」(売上金額の合計)を選択し、追加ボタンのドロップダウンメニューから「平均」を選択します。

これで平均まで出すことができました。それではここで得られた平均を使って各顧客の売上の合計金額を比較していきたいと思います。

今回のポイント フィールド付加ツール

今回のように全体の集計値を元データに付加していくような場合、フィールド付加ツールを使います。

フィールド付加ツールは、以下のようにT入力(Target入力)とS入力(Source入力)の二つの入力を持ちます。このツールは二つの入力間でデカルト結合を出力するツールです。

例えば、以下のように食事リストと飲み物リストがあり、これの組み合わせの全パターンが欲しいといった場合に、フィールド付加ツールの二つの入力にそれぞれのリストを入力すると、すべての組み合わせが得られます。

例えば、今回の例であれば、以下のようにフィールド付加ツールを配置します。

これにより、以下のように各顧客の売上合計金額の各レコードに対して、全体の平均値が付加されます。

フィールド付加ツールの設定は以下の通りですが、今回はデフォルトの設定で問題ありません。

一番下にある「生成されるレコードが多すぎる場合の警告/エラー」のオプションは、Source入力が16レコード以上ある場合は別のオプションに変更する必要があります。T、S入力両方に多量のデータが入力されると、アウトプットデータが非常に多くなってしまうため、S入力に多量のデータがインプットされた場合はデフォルトではエラーを意図的に出力するようになっています。

ここまでで、各顧客の売上金額のデータに対して、平均値が付加されたので、あとはフィルターツールで比較するだけです。今回はカスタムフィルターを使います。

[Sum_amount]>=[Avg_Sum_amount]

あとは、customer_idの昇順に並べ替え、サンプリングツールで10件のレコードを抽出し、不要な項目である「Avg_Sum_amount」をセレクトツールで除去すれば完成です。

まとめ

今回は、フィールド付加ツールが出てきました。Alteryxを使う上で必要性を説明しにくい割に非常に重要なツールの一つです。単独では効果的な使い方はできないのですが、他のツールと組み合わせることでデータ処理のロジックを作る上でなくてはならないツールです。使いどころをしっかり押さえておくと非常に応用の効くツールです。

解答ワークフローダウンロード

コメント

タイトルとURLをコピーしました