このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-028: レシート明細データ(receipt.csv)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。
解答ワークフローは以下のようになります。
27問目との違いは、平均ではなく中央値を取ることです。27問目と異なる部分だけ色を付けて解説していきたいと思います。平均値ではなく中央値を使う場合というのは、中央値の方が外れ値に強い、ということになります。
今回は、店舗コードごとの売上金額の中央値を計算後、降順でTop5を取得する、とのことですが、今まで行ってきた内容で十分解ける問題です。基本的には、以下のように解いていきます。
- 型を適切に変更する
- 店舗コードごとにグループ化して中央値を取る
- 並べ替える
- 5件取得する
まず、型を変更しましょう。基本的にセレクトツールで行います。なお、amountはInt16型になります。ついでに不要なフィールドも削除しておきます。
次に集計ツールを使って、店舗コードごとにグループ化して中央値を取りましょう。
次にソートツールで並べ替えます。単純に先ほど取得したamountの中央値(ここでは、「Median_amount」としています。)に対して、降順でソートします。
最後に、サンプリングツールで先頭から5件取得します。つまり、N=5とします。
次に、フィルターツールで取得した最大値、最小値が異なるかどうかを判定します。
もちろん、レコード選択ツールで1-5レコードを取得しても問題ありません。
まとめ
今回は、集計の問題でした。基本的に集計後は並べ替えたり、TopNを取ったりということが多いかと思います。よく使う手法ですので慣れておきましょう。
コメント