非プログラマーのためのインフォマティクス入門。(仮)

非プログラマーがインフォマティクスについて勉強したことを記録します。主にKNIMEというソフトを使用しています。

【超入門(2/3)】KNIMEの使い方 〜欲しい行だけ抽出しよう(Row filter, splitter)〜

前回はExcel Readerを使ってエクセルファイルを読み込んでみました。

 

sumtat.hatenablog.com

 ちなみに、Excelをインストールしていなくても、中身にアクセスできますよー。

 

さて、サンプルとして

f:id:sumtat:20170723160755p:plainこんな感じのデータを読み込みました。今回は宣言どおり、性別が男性のデータのみを抽出しようと思います。

 

 

 Row Filter

文字通り、行に対してフィルタリングするというものです。画面左側のNode repositoryからRow Filterを探して作業エリアにドラッグ&ドロップします。続いてExcel Readerの出口▶︎とRow Filterの入り口▶︎を繋げるようにマウス操作します。

f:id:sumtat:20170724150952p:plain

2つのノードが線で繋がったら、Row Filterの設定画面を開きます(ダブルクリック or 右クリックメニュー内のconfigure...)。

f:id:sumtat:20170724153258p:plain今回の例の場合、必要なのは赤枠部分です。

まず、性別についてフィルターしたいので、

①:Column to testを【性別】に指定します。

 

次に【男】という文字列でフィルターしたいので

②:"男"を入力します。

注)条件に日本語を入力しようとするとwindowsは問題ないのですが、macだとうまくいかないかもしれません。その場合、Tableからコピペしてください。虫眼鏡アイコンで表示させたoutput tableの中身はmac : command+c, win : ctrl+cでコピー可能です

 

設定画面左側の

③:Include rows by attribute value

にチェックが入っていることを確認してください。

 

緑・紫枠の部分は今回は使用しませんが、よく使う設定です。特にonly missing values matchはよく使います。missing valueとは「何にもデータが入ってない」ことを指します(KNIMEのTable内では赤色の?マークとして便宜上表示されます)。統計的な処理を施そうと思った時に空欄があるのは不都合なので、そのような行を除くために使うことが多いです。

 

ここまでの設定を行った後に、実行(execute)した後に、虫眼鏡アイコン(右クリックメニューなら"Filtered")を選択すると次のようになります。

f:id:sumtat:20170724155133p:plain男だらけのむさ苦しいTableが確かに出来上がっています。

 

Row splitter

さて、ここまではRow filterについて書きましたが、実は筆者の使用頻度は低いです。

その代わりにRow splitterをよく使います。

f:id:sumtat:20170724160622p:plain理由は、データをなるべく捨てたくないからです。1千万行くらいの大きなデータについて作業するとどうしても計算速度が遅くなります。そういう時は積極的にfilterを使ってなるべく軽くなるようにしますが、そうでない場合、splitterを採用して、条件に漏れたデータも2つ目の▶︎から復活や別の処理の実行ができるようにしています。また除外したデータが、本当に除外するべきデータなのかをよく確認するようにしています。

Row splitterの設定画面を見ていきます。

f:id:sumtat:20170724161939p:plain

はい、そうです。Row Filterと全く同じです。

実行するとIncludeが出口の上▶︎、excludeが出口の下▶︎から吐き出されてきます。

f:id:sumtat:20170724162003p:plain右クリックメニューからFilteredを選択すれば上の▶︎に吐き出されたデータ(今回の場合は男)、Filtered Outを選択すれば下の▶︎に吐き出されたデータ(今回の場合は"男"以外)のテーブルを確認することができます。

f:id:sumtat:20170724162602p:plain前回の記事にも書きましたが、出口の▶︎にマウスオンすると、何行(Rows)・何列(Cols)のデータが流れてきたか確認できます。今回の場合Excel Readerの出口がRows:7, Row splitterの上側▶︎がRows:4, 下側▶︎がRows:3となっており、データの数がちゃんとあっていることを確認できます(7件ぐらいなら意味ないかもですが、データがたくさんの場合は必ず確認すべきです)。

それぞれのOutput tabelのヘッダ?にも何行あるか表示されますので、それを見てもいいかもしれません。

 

今回はRow filter, splitterについて書きました。次回は、とりあえずフローを完結させるため、処理を行ったデータをエクセルファイルとして保存する(書き出す)方法と、フローの保存方法について書いてみようと思います。