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

100本ノック

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

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

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

今回は、集計ツールとフィルターツールを使った基礎的な問題ですが、合計を求めてから平均を取るため、2回集計ツールを使う必要があります。

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

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

!StartsWith([customer_id], "Z")

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

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

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

以上で完了です。

まとめ

今回は素直な問題ですが、今回のようにグループごとの平均というのは一度に出せず、まず合計してから平均という形を取るため、2回集計ツールを使う必要があります。

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

コメント

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