デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - 欠損値(空白セル)を埋める ~Missing Value~

f:id:makkynm:20201220101236p:plain

 

 

はじめに

超重要Nodeです!紹介するのをすっかり忘れていました。今回は欠損値を処理するNode、"Missing Value"を扱いたいと思います。

 

 今回のテーマ ~Missing Value~

f:id:makkynm:20200725203448p:plain

今回のテーマ ~Missing Value~

workflowは下記からダウンロードできます

hub.knime.com

 

覚えてほしいこと

Default は一括設定、Column settingは個別設定

 

やりたいこと

KNIMEで欠損値は「?」で表示されます。この欠損値をどう埋めていくかを指定することによって、様々な処理ができるようになります。

今回は代表的な要素として、文字列は直前の値を、数値は0で補間するという処理を行っていきたいと思います。

f:id:makkynm:20200725205011p:plain

やりたいこと - 欠損値を処理する

Missing Valueの使い方

欠損値を埋めるときに使用します。固定値を入れるだけでなく、直前の行を参照することなどができるので、Sorterと組み合わせれば週単位の値をコピーするなど、様々な応用が利きます。

Workflow

例外付き実行完了状態になっていますが、Outputが予期していたものであれば特に意識しなくて大丈夫です。ちなみにこの注意メッセージは、Previous Valueという直前の値を参照するオプションが青いOutputの方に対応していないというものです。選択肢で、*がついているものを選択すると、このメッセージが出てきます。

f:id:makkynm:20200725203448p:plain

Workflow - Missing Value

Confirm - Before After

文字列は直前の値を、数値は0を入力するという処理を行っていきたいと思います。

例としてTable Creatorで数値と文字列のコラムを一つずつと、欠損値のないコラムを1つ作成しています。

f:id:makkynm:20200725204937p:plain

Confirm - Missing Value

Configure

Step1 - Default データ型ごとに処理を指定

まずはデフォルト設定をデータ型ごとに決めます。もしここでNumber(double)に固定値の "0.0" を指定した場合、欠損値のあるDouble型のコラムすべてに対して欠損値を "0.0"で置き換える処理を適用することになります。

今回は個別のコラムで指定しようと思うので、ともに "Do nothing"を指定しています。

 

f:id:makkynm:20200725204151p:plain

Configure - Step1 データ型毎に欠損値処理を指定

 

Step2 - Column Settings コラムごとに処理を指定

次にコラムごとに処理を指定するオプションです。もしデータ型ごとの指定で十分であれば、特に設定の必要はありません。こちらで指定されたコラムはStep1の設定は無視され、ここでの設定が優先されます。

左のコラムリストから欠損値を行いたいコラムをダブルクリックして、右の設定画面に表示します。その後プルダウンメニューからそのコラムに行いたい欠損値処理の種類を選択します。

各処理方法とその意味は下記の通りです。

欠損値 処理方法 意味
Average Interpolation* 前後の値の平均を取る。値がない場合は次に値があるものを探して平均を取る
Fix Value 固定値
Linear Interpolation* 前後の値で線形補間を行う。
Maximum コラム内の最大値を取る
Mean コラム内の平均値を取る
Median コラム内の中央値を取る
Minimum コラム内の最小値を取る
Most Frequent Value コラム内の最頻値を取る
Moving Average* 移動平均を取る。移動平均を取る範囲は、前後で調整ができる。
Next* 次に出てくる値を取る。
Previous* 直前に出てきた値を取る
Remove Row* その行を削除する
Rounded Mean コラム内の平均値を四捨五入した値を取る

 

今回は

Integerというコラムの欠損値は、固定値の "0.0" で埋めたいので、Fix Value

Stringというコラムの欠損値は、直前の行の値で埋めたいので、Previous Value

で設定します。

 

f:id:makkynm:20200725204526p:plain

Step2 - コラムごとに欠損値処理を指定

 

 

 

おわりに

使いどころ満載のMisssing Value Nodeでした。様々な場面で使うと思います。Column Settingは個別のコラムで処理を指定しているので、コラムが増えたりコラム名が変わったりする際には使用できないことに注意してください。

コロナ状況下ではありますが、適度にリラックスできるように連休楽しみましょう!ではまた!

 

 

 

余談 

今回紹介するのは、ご存知「おくりびと」です。葬儀業という普段関わらない職業をユーモアを踏まえて表現していて、非常にきれいな作品だなと思いました。 

映画「おくりびと」【TBSオンデマンド】

映画「おくりびと」【TBSオンデマンド】

  • 発売日: 2016/07/16
  • メディア: Prime Video
 

 

www.youtube.com

参考リンク