【超入門】Loopを回せ! 〜KNIMEを使って複数のファイルを一気に読んでみよう〜
勝手に偉そうな命名をした"超入門シリーズ"ですが、これまでに
について紹介してきました。
さていよいよ今回はループの回し方について紹介したいと思います。
この3つが揃えば、データサイエンティストやプログラミングガチ勢ではない、私のような専門外の人間でも、ある程度のルーチンワークをKNIMEにお願いすることができるようになります。
今回は例として、
【複数のファイルを一気に全部読み込む】という作業にtryしてみます。
読み込むファイルの形式はsdfというものにして説明しますが、エクセルでもcsvでも、大体流れは同じです。
さて、状況のイメージです。
ひとつのフォルダに読みたいファイルが全て入っているものとします。今回の場合は、testという名前のフォルダにfile_0.sdf ~ file_9.sdfという10個のファイルが格納されています*1。これを一気に読んでいこうと思います。
あんまりピンとこないでしょうか?
- 10人から集めたファイルを一つにしたい
- 毎月のレポートを10ヶ月分まとめて解析したい
などなど、色んな場面が考えられると思うので、皆様の状況によく合うものをイメージすると活用に繋がるのではないでしょうか?
それでは、KNIMEの操作について紹介します。
*1:ファイルの日付に注目して下さい。全部同じ時間ですね。今回の例題として使った10個のファイルは、もともと1つだったファイルをKNIMEを使って私が10分割したものです。これもloopを使った処理により作成しています。色々簡単にできます
【KNIME】小ネタ:変数受け渡しに使う"赤線"の活用法
前回の記事の最後に、こんなキャプチャを載せました。
●ー●の繋がりは、基本的には変数の受け渡しを行うためのものです。上記の例だと、Table Row to Variableで日付データを変数として、Excel Writerに渡す部分だけあれば目的は達成できるはずなんですよね。解説にもそう書きました。
では、最初のExcel ReaderとTime Generatorを赤線で繋ぐことに、何かadvantageがあるんでしょうか?
…無いのにわざわざ話題にしないですよね。はい、いいことあります。
結論を言うと、
workflowの動きをコントロールできる
ということです。
では例を挙げて紹介します。
続きを読む【超入門】KNIMEで変数を使うには 〜今日の日付をエクセルのシート名にして書き出してみよう〜
今回*1は変数*2の使い方について、基本的な部分を書いてみようと思います。あまり馴染みのない方もいらっしゃるかもしれませんが、
- 変数なし:すべて徒歩でプレイ
- 変数あり:キメラのつばさ使える
くらいに幅が広がると思います。
(さらにループ処理ができればルーラですかね。それはまた別の機会にしましょう)
題材として、
【作業(stock:noを取ってくる)をしている日付を、書き出すエクセルのシート名にする】
ということをしてみようと思います。
*1:記事の作成日は2017/08/12です
*2:変数について書かれている記事はweb上にたっぷりあるので、好みのものを探して読んでみるのが1番いいと思いますが、"状況により変わる数(データ)"のことです。
例えば今回の記事では【変数="本日の日付グループご担当者様"】みたいな感じでしょうか?今日の時点では【"2017/08/12さん"が実際の担当者=実際の変数の値】みたいな感じです。明日の担当者は"2017/08/13さん"になるし、その後も変わっていく数ですよね。
*場合によっては変数といいながらも内容が変わらないこともあります。"変わることができる数"といったほうが適当かもしれません
【KNIME】ノード紹介:Nominal Value Row Filter 〜欲しいカテゴリのrowを抽出したい〜
お盆休みですね。まったりと更新してきます。
さて、行(row)の抽出のために使うrow filterやrow splitterには結構色々な種類があります。これまでの記事では
-
Reference row splitter (紹介してないけど、これのfilter版もあるよ)
なんかを紹介しました。個人的には上記のsplitter2つをよく使います。
今回はより一段とお手軽な設定で、欲しいカテゴリのデータを抽出するときに活用できそうなノードを紹介します。
例題としては、
上記のようなテーブルから、"犬と猿"のデータを取ってこようと思います。
続きを読む【KNIME】ノード紹介:Missing Value 〜欠損値を処理しよう〜
今回は欠損値の処理に使えるノードを紹介します。ざっくりといえばテーブルの空っぽの部分をどうするかということです。
KNIME(3.3以上)のテーブル表示では、欠損値は?で表示されます(3.2以前は?です。黒色のはてななので、欠損値なのか本物の?なのかちょっとわかりにくので注意)。こういう空っぽのデータがあると、統計解析などの際に不具合です。欠損値を持つデータを除く対応もあると思いますし、何かしらの固定値等で埋めてしまうなどの対応もあると思います。
主に、そんなときに使えるのがMissing Valueノードです。例として次のようなデータを読んで欠損値処理をしてみます。
おぅ。セルの結合が含まれてますね…。解析するときに、これ邪魔です。Missing Valueノードを使って、これもうまく処理しちゃいましょう!
続きを読む
【KNIME】ノード紹介:concatenate 〜複数のテーブルをとにかく纏める〜
今回は時間がうまく作れなかったので、短めの記事です。でも活用頻度は大のノードを紹介します。
Concatenate
名前の通り、連結するノードです。極力余計なことはしないで、複数のデータを"縦方向に"連結します。キャプチャを見た方が早いと思うので、貼ります↓。
入力側の2つのテーブルには"name", "maker", "price"の共通するカラムがあります(属性も一致)。カラム名が同じものは、同じところに並べてくれます。一方で"status", "amount"はそれぞれ片方にしかありません。このようなカラムもとにかく連結してくれます。データのない部分は欠損値になります。
設定画面で、両者に共通のカラムだけ残すという指定もできますが、何も考えず繋げてGoでいいかな?と思いますよ!
続きを読む【メドケム】KNIMEでリガンド効率を計算するよ 〜言い換えれば、ただの四則演算〜
今回は四則演算の題材としてLE(Ligand Efficiency, リガンド効率)の計算をしてみます。もはや説明の必要もないかもしれませんが、ざっくりと言えば、
"水素以外の原子1つ1つが、どのくらい頑張って活性に貢献してるの?"
みたいな感じでしょうか。ずいぶん前に提唱された指標ですが、わかりやすいし私は嫌いじゃないです。
定義式としては
非水素原子数(HA)あたりの結合のギブス自由エネルギー
です。
続きを読む