はじめに
次に超頻出NodeのGroupByについて解説します。このNodeは合計値や平均値を求めるだけでなく、セルの結合をさせたり上のセルの値をコピーしたりと応用次第で使用用途がかなり広がりますが、今回は一番使いそうな合計値を求めることにします。
今回のテーマ ~GroupBy~
今回は前回のデータを使って残業時間の合計値を色々なパターンで計算してみます。Excel でいうと、ピボットテーブルでできる集計のことです。
Workflowはこちらからダウンロードできます。
覚えてほしいこと
ピボットテーブルの行をGroup Setting
値をAggregationで指定
やりたいこと
Excelのピボットテーブルでいう、行と値を使用することでできる集計機能をKNIMEで表現します。
GroupBy の使い方
Workflow
Confirm - Before After
Confirmの結果を先に見てみましょう。Excel ピボットテーブルで集計するように、社員番号(及び名前)ごとの合計残業時間が計算されていることが分かります。
Configure
今回も大きく分けて4Stepあります。
Step1 - Group setting
まず最初に、グループを指定します。今回は各社員ごとの残業時間を算出したいので、「社員番号」と「名前」をGroup columnの緑の枠に入れました。
この設定はピボットテーブルでいう”行”に相当します。
Step2 - Aggregation column setting
次に、どのコラムを計算させるかを指定します。ピボットテーブルでいう"値"に相当します。
まずは、Manual Aggregationのタブをクリックします。すると、選択可能なコラム一覧がAvailable Columnsに出てきます。
このコラム一覧から、計算させたいコラム(今回は"残業時間[h]")をダブルクリックするか、1クリックしてAddのボタンを押せば、計算対象に指定できます。
Step3 - Aggregation setting
実際に計算させる方法をここで指定します。Aggregationの部分をクリックすると、計算方法が指定できます。今回は合計を求めたいので、"Sum"を指定しました。
このプルダウンから出てくる設定ですが、指定したコラムのデータ型によって変わります。今回は数字(Integer)だったので、Sumが出てきましたが、他のデータ型だと選択できる種類が少なかったりします。
Step4 - Column Naming
計算させたコラムの名前の設定です。同じコラムに対して複数計算をさせない限り(一度で合計と平均の2コラム出力する)、"Keep original name(s)"「元のコラム名を維持する」でいいと思います。
複数計算させる場合、他の2つのどちらか好みの方を指定すればいいです。
"Aggregation method (column name)" --> 「Sum (残業時間[h])」
" column name (Aggregation method)" --> 「残業時間[h] (Sum )」
たったこれだけで終了です!
ちょっと一言
Tips1 - Aggregationの選択方法
上では触れませんでしたが、計算するコラムを選択するには上で使用した一つ一つコラムを選択する、"Manual Aggregation"のほかに2種類あります。
"Pattern Based Aggregation" --> コラム名の規則でコラムを選択する
"Type Based Aggregation" --> データ型でコラムを選択する
コラム数が多い時や、コラム名が変化するときに使えますね。(日付がコラム名になっている場合等)
Tips2 - 計算させたいコラムの複数選択
上で少しふれたとおり、同じコラムを複数回選択し、合計・平均値などを一度に求めることが可能です。方法はAvailable Columnsで何度もクリックするだけです。
この方法を使うときは名前の設定で「Keep original name(s)」は使えないので、他を選びましょう。
Tips3 - 代表的なAggregation の種類
代表的なAggregationの種類について、ここで触れます。
Aggregation | 意味 | 補足 |
Concatenate | 値をくっつける | くっつけ方は、Value Delimiterで指定可能。 \nを入力すると改行することができるため、 セルの結合で使用可能 |
Count | カウント | 出勤日に指定すれば、出勤日が計算できる |
First | 最初の値 | くっつけるとき、最初に出てきた値を返す 欠損値を上のセルからコピーしたいときに使ったりする |
Last | 最後の値 | くっつけるとき、最後に出てきた値を返す 欠損値を下のセルからコピーしたいときに使ったりする |
Maximum | 最大値 | |
Minimum | 最小値 | |
Mean | 平均値 | |
Mean absolute deviation | 平均絶対偏差 | 絶対偏差の平均。 基準値と測定値の差の絶対値の平均値。 |
Median | 中央値 | |
Median absolute deviation | 中央絶対偏差 | 絶対偏差の中央値 |
Missing value count | 欠損値カウント | |
Mode | 最頻値 | |
Percent | パーセント | 全体の行数に対して、カウントの値が示す% |
Standard deviation | 標準偏差 | データのばらつきの大きさを表わす指標 各データの値と平均の差の2乗の合計を、データの総数 n で割った値の正の平方根 |
Sum | 合計値 |
おわりに
GroupByを習得すればかなりのマニュアルレポートや、普段のデータ処理が
かなり楽になるのではないでしょうか。Try&Errorで触れば触るほど、どのような時に使えばいいのかが分かってきます。
変に触っても壊れませんので、ぜひ何度も失敗してみてどうすればうまく実行できるのか何度も試してみてください。
余談
新しいことを学ぶ方々、特に新入社員に見てほしいのは、「プラダを着た悪魔」です。すごく有名な映画だと思います。新卒で入社したのがド・ブラックな女社長のアシスタントという職種という設定で、最初自分の中で持っていた間違ったプライドのようなものが修正された瞬間に、劇的な成長へとつながっていくというサクセスストーリーを描いた映画です。新入社員から見てこれは違うだろ、馬鹿らしいと思いながらも、少し素直になって見方・とらえ方を変えてみると物事の本質に気付けて自分の成功につながるよと言われているような気がするメッセージ性が高くかつ感動する映画です。
参考リンク
- すさんのBlog:GroupByを利用した上下でのセルの結合について分かりやすく解説されてます。
【KNIME】ノード紹介:GroupBy 〜同じものをひとまとめに〜 - 非プログラマーのためのインフォマティクス入門。(仮)
- KNIME公式Node Pit(英語):
- KNIME Example Workflow(英語):
08_More_GroupBy_Examples [Workflow] — NodePit