デジタル推進課

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

業務自動化これ一本!? KNIME 初心者への完全ガイド! KNIMEの使い方 入門から応用まで

本ブログでは、KNIME 初心者のための完全ガイドを作成しています。

 

KNIME初心者でもこれだけやれば、「KNIMEなんて簡単!」「自動化?まかせて!」「まだExcelでレポート作ってるの?」と言えるような人になれるようになることを想定しています。

Excelしか使ったことない・使う気のない方々に、KNIMEを使ってもらえるよう、私が実際に外資系企業で教えているノウハウを惜しみなく掲載中です。

自動化ツールKNIMEを社員全員が使える、ハイテク企業を目指しましょう!

 

皆さんの応援のおかげで2021年7月、KNIME社から日本人初Contributer Of the Monthを授与していただくことになりました。本当にありがとうございます。今後ともまっきーをよろしくお願いいたします!

 

その他の自動化ツール・プログラミングも随時更新しようと思います。 

Twitter アカウント:まっきー | デジタル推進課 (@makkynm) | Twitter

KNIME Hub アカウント:makkynm/Public – KNIME Hub

一日1回押していただけると大変応援になります↓ 

にほんブログ村 IT技術ブログへ

 

 

 

KNIME - 始める前に

  1.  KNIMEとは?

  2. KNIMEをインストールしてみよう 

  3. KNIME - 2分で完了!? KNIMEをインストールしてみよう Mac編 - 2020年M1搭載MacBook Air で起動時間検証!

  4.  KNIME - 始めるその前に Databaseの基礎を理解しよう 

  5. KNIME - 始めるその前に (知っておくと便利)正規化とは? 

その他

  1. KNIME - 最新バージョンにアップデートしてみよう

  2. KNIME - 拡張機能を使って最強便利ツールに激変させる~install KNIME extensions~

  3. KNIME - KNIME版GitHub!? KNIME Hubとは? - 機能・使い方を解説 

KNIME - 初級編

  1. KNIME - 画面構成とNodeの基本構成 

  2. KNIME - 新しいワークフローを作ってみよう

  3. KNIME - Excelを読み書きしよう 

  4. KNIME - データ型変換を覚える ~XX to YY~ 

  5. KNIME - VLOOK UP を覚える ~Joiner~ 

  6. KNIME - グループで集計する ~GroupBy~ 

  7. KNIME - 特定のデータを抜き出す1 ~Row Filter / Splitter~ 

  8. KNIME - テーブルを上下でくっつける ~Concatenate~ 

  9. KNIME - 文字列を操作する ~String Manipulation~ CONCATENATE関数・置換・MID関数・FIND関数・LEFT関数・RIGHT関数 

  10. KNIME - 計算をする ~Math Formula~ 

  11. KNIME - 並び替えを行う ~Sorter~ 

  12. KNIME - ピボットを行う 行から列へ ~Pivoting~ 

  13. KNIME - ピボットをもとに戻す 列から行へ ~Unpivoting~ 

  14. KNIME - コラムの名前変更・削除・並び替え ~Column Rename / Column Filter / Column Resorter ~ 

  15. KNIME - ワークフローを共有しよう・受け取ろう 

知っておくと便利

  1. KNIME - ブラックボックスツールにしないためには? メモを残そう ~Annotation・Metanode・Node Description~ 

  2. KNIME - Workflowをカスタマイズしよう ~グリッドサイズ・ノード接続線~ 

 

 

KNIME - 中級編

  1. KNIME - 変数を使ってExcelに日付のSheetを追加してみよう ~Flow variable / Date&Time Configuration / Excel Sheet Appender~ 

  2. KNIME - Loopで複数ファイルを一気に読み込む ~List Files / Loop Start / Loop End / URL to File Path~

  3. KNIME - CSV ファイル・タブ区切りファイルを読み込む / Excel区切り位置の自動化 ~CSV Reader~

  4. KNIME - CSV ファイルを書き出す ~CSV Writer~ 

  5. KNIME - すべて文字列Stringとして取り込む ~File Reader~

  6. KNIME - 特定のデータを抜き出す2 ~Nominal Value Row Filter / Splitter~

  7. KNIME –特定のデータを抜き出す3~Duplicate Row Filter~ 重複削除・重複チェック

  8. KNIME - 特定のデータを抜き出す4 ~Reference Row Filter / Splitter~ 他テーブルを参照してフィルタを適用

  9. KNIME - 特定のデータを抜き出す5 ~Rule-based Row Filter/Splitter~ 複数の条件でフィルタ

  10. KNIME - 行/列の入れ替え ~Transpose~ Excel貼り付けオプションの自動化 

  11. KNIME - マニュアルでテーブルをKNIME内で作る ~Table Creator~

  12. KNIME - コラム名を抽出する ~Extract Column Header~

  13. KNIME - 総入れ替え! コラム名を挿入する ~Insert Column Header~

  14. KNIME - Row IDをいじり倒す ~Row ID~ 

  15. KNIME - コラムリストをもとにコラム削除 ~Reference Column Filter / Splitter~

  16. KNIME - ラベルを付ける ~Rule Engine~

  17. KNIME - 値の種類を数える / 固定値のコラムを作成する ~Value Counter / Constant Value Column~

  18. KNIME - セルをぶった切る ~Cell Splitter~

  19. KNIME - 文字数でセルをぶった切る ~Cell Splitter by position~

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

  21. KNIME - 時を操る1 日時を作る ~Create Date&Time Range~

  22. KNIME - 総当たりでデータ作成! ~Cross Joiner~

  23. KNIME - 時を操る2 期間の計算 ~Date&Time Difference~

  24. KNIME - 時を操る3 日時の足し算・引き算 ~Date&Time Shift~

  25. KNIME - 時を操る4 日時でフィルタリング ~Date&Time-based Row Filter~

  26. KNIME - 超便利! 時を操る5 日時情報を抜き出す ~Extract Date&Time Fields~

  27. KNIME - ファイルパスを操る1 - 今日の日付のフォルダを作る Create Directory

  28. KNIME - ファイルパスを操る2 - ファイルパスを作る Create File name

  29. KNIME - ファイルパスを操る3 - 自動削除フォルダを作る Create Temp Dir 

  30. KNIME - ファイルパスを操る4 - KNIMEで相対パス使うには?

  31. KNIME - ショートカットキーで毎日をちょっと便利に

  32. KNIME - これで完全自動化! - KNIMEを立ち上げずに実行する - バッチファイル・コマンドプロンプト

知っておくと便利編

  1. KNIME - 指定した回数繰り返すには? ~Counting Loop Start~

  2. KNIME - 実践編! 前処理が命。数日単位のデータを日単位のデータに ~Chunk Loop Start~

  3. KNIME - バグ取り支援 わざとエラーを起こす ~ Breakpoint ~

  4. KNIME - GroupByをしたあと元データに戻すには? Listの分解 ~Ungroup~

  5. KNIME - 桁数調整をするには? 四捨五入・切り上げ・切り捨て ~Round Double~

  6. KNIME - Google アカウントと1クリックで連携させるには? ~Google Authentification~

  7. KNIME - Google Spread Sheet をKNIMEで使うには? ~Google Sheets Connection / Google Sheets Reader Writer~

  8. KNIME - Googleドライブ上にあるExcelを読み込み・書き出すには? ~Google Drive Connector / Excel Reader Writer v4.3~

  9. KNIME - 時系列解析の第一歩!株価の移動平均を求めるには? ~Moving Average~

  10. KNIME - [使いすぎ注意] 中間処理テーブル・離れた場所にTableの受け渡しをするには? ~Table Reader / Table Writer~

  11. KNIME - Excelの見た目を綺麗にするには? Excelの書式設定を自動化! ~XLS Formatter Nodes~

  12. KNIME - 分割してExcel出力!グループごとに繰り返すには? - Group Loop Start

  13. KNIME - カラム操作はこれ1つで十分!? 万能Node! - Column Expressions

  14. KNIME - 時系列データ処理に必須!? 変化量を求める ~Lag Column~

  15. KNIME - 勝手にランク付!2番目に残業時間が長い社員は誰!? - Rank

  16. KNIME - 累積を使ってコロナ陽性者数推移を出してみよう!- Moving Aggregation

 

 

KNIME - 上級編

  1. KNIME - データベースノードとは? - 無料ETLツールとしてのKNIME

  2. KNIME - データベース(MS Access)を読み込む - Microsoft Access Connector・DB Table Selector・DB Reader

  3. KNIME - 条件によって異なる処理を - IF文・Switch文を習得する ~IF Switch・End IF~ 

  4. KNIME - Java でデータを操作する ~Java Snippet~ 

  5. KNIME - 固定長のファイルを読み込む fixed length input ~Java Snippet~

  6. KNIME - Javaで全角半角の相互変換!カタカナ・英数字・記号 ~Java Snippet~ 

  7. KNIME - Java 全角半角変換Nodeを作る - Java Snippet|まっきー|note

  8. KNIME - エラーでも止めない努力 - 例外処理 ~Try / Catch Errors~

  9. KNIME - 条件付きDo While Loop を実現させるには? ~ Variable Condition Loop End ~

  10. KNIME - ゼロ点揃えはできるのか?ワークフロー作成の考え方も解説 ~実践編~ 

  11. KNIME - APIを使ってみよう!郵便番号から住所を一括取得するには? ~GET Request / String to JSON / JSON to Table~ 

  12. KNIME - XMLを簡単に分解するには? ~XPath・サイトマップ~

  13. KNIME - 無限列車!? 終了条件まで無限回数繰り返すには?~Recursive Loop Start / End 再帰型ループ~ 

  14. KNIME - 実行完了通知をTeams / Slackに投稿するには? ~ Post Request / Incoming Webhook ~

 

KNIME - グラフ化

  1. KNIME - 棒グラフを作るには? - Bar Chart

  2. KNIME - 円グラフを作るには? - Pie/Donut Chart

  3. KNIME - 線グラフを作るには? ~Line Plot~

 

Bat - バッチファイル

  1. バッチファイル - 完全自動化の第一歩!バッチファイルとは?

  2. KNIME - これで完全自動化! - KNIMEを立ち上げずに実行する2 - タスクスケジューラ 

 

 

Python - ウェブスクレイピング

  1. Python - 情報処理試験 サイト内にあるPDFを一括でダウンロードする!! 123ファイルが2分でダウンロードできたよ!

  2. [東カレ] 完全自動いいね・足跡ツール公開|まっきー|note

  3. Python - Jupyter NotebookをMac M1 搭載機にインストールする

  4. Python - M1 MacにVisual Studio codeをインストールしてpythonを実行する

  5. Python - Mac M1搭載機にPython 3.9.1をインストーラでインストールしてみた

  6. Python - WebページをPDFで自動保存する ~Selenium pdf Print Option~ HTML to PDF

  7. Mac M1搭載機にHomebrewをインストールするには?

  8. Python - 完全自動化!初心者が無料でウェブスクレイピングを定期実行してみた - Mac M1搭載機 ~Heroku / Selenium / Homebrew / Chrome Driver~ 

  9. Python - Mac M1 ARMネイティブな環境を作る ~miniforge / Conda~

  10. Python - SUUMOで関東一人暮らしお得物件を見つけたい! ~ 不動産賃貸物件スクレイピング

 

資格取得

  1. 資格取得 - 勉強期間1ヶ月!?独学で基本情報技術者試験に合格するためにすべき3つのこと

 

Backendless - チュートリアル

  1. Backendlessチュートリアルミッション1- DATA SPONGE - DATABASE

  2. Backendlessチュートリアルミッション2- FILE EXPLORER

  3. Backendlessチュートリアルミッション3- CODELESS CRUD ROOKIE

  4. Backendlessチュートリアルミッション4- FILE MANAGER

  5. Backendlessチュートリアルミッション5- USER ROOKIE

  6. Backendlessチュートリアルミッション6- GEO EXPLORER

  7. Backendlessチュートリアルミッション7 - USER MANAGER

  8. Backendlessチュートリアルミッション8 - DATA MINER

  9. Backendlessチュートリアルミッション9 - SERVERLESS 101

 

その他

  1. ブログ開設記念

  2. はてなブログ無料版でGoogle Adsenseに合格したい方必見! - 審査基準を徹底分析 17回落ちて気付いたこと ~2020年8月版~ 

  3. プライバシーポリシー 

  4. お問い合わせ 

 

KNIMEに関する本

たまに質問もらいます、KNIMEに関する書籍です。

KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、

本がいいなーと言う人はぜひ試してみてください。

 

 

 

KNIME - 累積を使ってコロナ陽性者数推移を出してみよう!- Moving Aggregation

f:id:makkynm:20210814161129p:plain

 

はじめに 

こんにちは、自動化大好きまっきーです。今まで残業時間というみなさんに身近なテーマでNodeを解説してきましたが、今回は最近身近な話題となった「コロナ陽性者数」のデータを使用して、KNIMEで累積を取る方法について解説したいと思います。

 

 今回のテーマ ~累積 Moving Aggregation~

f:id:makkynm:20210814150232p:plain

 今回のテーマ ~累積 Moving Aggregation~

 

覚えてほしいこと

累積する前にSort!Groupごとに分ける!

 

やりたいこと

コロナ陽性者数の推移を2種類の方法で累積・可視化してみたいと思います。

陽性者数のデータは厚生労働省のホームページからダウンロードできます。リンク

オープンデータ|厚生労働省

 

やりたいこと1 - 全国の感染者数で累積

Prefecture =ALL(全国のデータ)にデータを絞って、日付順に累積を取ることで、全国のコロナ陽性者の累積を算出したいと思います。

f:id:makkynm:20210814150431p:plain

やりたいこと1 - 全国の感染者数で累積

 

やりたいこと2 - 都道府県ごとの感染者数で累積

 

都道府県ごと感染者数の累積を取り、最後棒グラフにて日ごとの全国の感染者推移を各都道府県を反例として表示したいと思います。

f:id:makkynm:20210814150454p:plain

やりたいこと2 - 都道府県ごとの感染者数で累積

 

事前準備

データの中身の確認 - CSV Reader

まずはCSV Readerで元ファイルを読み込んでみましょう。2点注意点が見つかります。

f:id:makkynm:20210814151530p:plain

データの中身の確認 - CSV Reader
注意点1 - 都道府県のカラムにALL(全国)のデータが含まれている

データの中身に注目すると、都道府県のカラムに、各都道府県に加えてALLという全国のデータが含まれていることがわかります。これは累積を計算する上で注意が必要ですね。

全国のデータを求めたいときはIncludeで、都道府県のデータを求めたいときはExcludeでFilteringしてあげると綺麗ですね。Row Filter

f:id:makkynm:20210814152134p:plain

注意点1 - 都道府県のカラムにALL(全国)のデータが含まれている

 

注意点2 - Int型で読み込まれている

みなさん、これがなぜ注意点なのか分かりますか?

GroupByやpivoting等でも同じ注意が必要なので、KNIMEをよく触っている人は分かるかもしれません。

質問を変えて見ましょう。Int型、Double型、Long型の違いについて答えられますか?

今回の注意点はここからきています。

 

答えは桁数です。int型は32bitまでしか扱えないので、最大値は2147483647です。GroupByやPivoting、Moving AggregationなどでSumを取ると、この最大値を超えてしまって計算できなくなる場合があります。それを防ぐため、足し合わせて大きな数値になる場合があるときは事前にDouble型やLong型に変換した上で足しあげると予期せぬエラーを防ぐことができます。

 

ちなみにInt型からDouble型に変換する際は、Math Formulaを使用しています。

f:id:makkynm:20210814151926p:plain

Int型からDouble型に変換 - int to double

 

データのグループ化 - Pivoting 

Moving Aggregationは単純に上から足し上げていきます。都道府県ごとに足し上げようとしても、都道府県のデータが混在していたらきちんと累積を取ることができません。それを防ぐには、PivotingRow Filterを利用してあらかじめ累積すべきデータを分離させておく必要があります。

今回のような、都道府県ごとに求めたいときはPivotingを使用して一括で分離するのがお勧めです。分離させたい要素をPivotのカラム置くのがポイントです。

f:id:makkynm:20210814152621p:plain

データのグループ化 - Pivoting 

f:id:makkynm:20210814152641p:plain

データのグループ化 - Pivoting 

f:id:makkynm:20210814152654p:plain

データのグループ化 - Pivoting 

 

データの並び替え - Sorter 

累積でもう一つ重要な点が並び替えです。累積は上から単純に足しあげるだけなので、事前に並び替えておく必要があります。こんなときはSorterを使用していきましょう。今回は正しく並び替えられるよう、Dateのカラムをまず文字列(String)型から日付型に変換した後、Sorterを使用して並び替えています。

Date型に変換するときも1点注意ですね。今回の日付はyyyy/MM/ddではありません。つまり、例えば7月が、07という書き方になっておらず、単純に7という書き方になっています。

f:id:makkynm:20210814153344p:plain

String型からDate型に変換

f:id:makkynm:20210814153448p:plain

必ずSorterで事前に並び替え

 

Moving Aggregationの使い方

データの可視化にはBar Chartが便利です。行の先頭から累積していくNodeです。

KNIMEの中では珍しい、行の順番が重要なNodeになので、このNodeを使用する前は必ずSorterで正しい順番に並んでいるかを確認しましょう。

また、グループにも注意が必要です。ただひたすらに行の上から累積を計算してしまうので正しく累積を計算したい場合は、累積を計算したい順番だけでなく、Pivotingなどでグループごとにデータを整形してからこのMoving Aggregationを使用する必要があります。

Workflow - Moving Aggregation

f:id:makkynm:20210814152730p:plain

Workflow - Moving Aggregation

Workflowは下記リンクからダウンロードできます。

累積 - Moving Aggregation – KNIME Hub

Confirm - Moving Aggregation

今回はMoving Aggregationの結果だけでなく、棒グラフの結果も見てみましょう。Bar Chartとのコンビがよく分かると思います。

やりたいこと1 - 全国の感染者数を累積

1日ごと累積されていることがわかりますね。また、PrefectureをALLでFilteringをかけていることも重要です。

f:id:makkynm:20210814150431p:plain

やりたいこと1 - 全国の感染者数で累積

第何波と言われているのが、自分で可視化してみるとよく分かりますね。

f:id:makkynm:20210814153747p:plain

やりたいこと1 - 全国の感染者数で累積

 

やりたいこと2 - 都道府県ごとに感染者数を累積

続いて都道府県別です。カラム数が多くなりすぎるので元カラムは割愛しましたが、都道府県別に累積になっていることがわかります。

f:id:makkynm:20210814150454p:plain

やりたいこと2 - 都道府県ごとの感染者数で累積

全体の合計は先ほど出した全国と変わらないはずです。都道府県別に色が付くようになったので、もう少し詳細な情報も得られる形になっています。

政府や各県の動きをここにプロットしてみたら、きっかけが分かるかもしれませんね。

f:id:makkynm:20210814150232p:plain

やりたいこと2 - 都道府県ごとの感染者数で累積

 

Configure - Moving Aggregation

やりたいこと1も2も、累積の部分のConfigureはほぼ変わらないので一緒に解説します。

f:id:makkynm:20210814154642p:plain

Configure - Moving Aggregation

唯一、都道府県別のConfigureはManual Aggregationで1つ1つ指定していたら日が暮れてしまうので、Type Based Aggregationなどで一括で指定することをオススメします。

f:id:makkynm:20210814154907p:plain

Configure - やりたいこと2
Step1 - Cumulative computation - 累積機能ON

累積をするには、このCumulative computation にチェックを入れる必要があります。これにより、上にあるWindowなどの設定は不要になるので無視できます。

 

Step2 - Aggregation settings - 累積カラムの設定

GroupByなどの設定と全く同じですね。今回累積なのでSumにしましたが、他の計算方法を適用することももちろん可能です。

 

Step3 - その他のOption

その他のOptionを解説します。

  • Remove aggregation columns - 累積元カラムを削除する
  • Remove retained columns - 累積の計算に使用されなかったカラムを削除する

下の方の設定はGroupByなどと同じなので解説しません。

 

 ちょっと一言

Moving Averageのような使い方

今回は累積の使い方について説明しましたが、オプションで累積を指定しなければ、Moving Averageと同じような使い方ができます。Moving Averageは平均の種類がたくさんありましたが、Moving AggregationはSumやCountなど、GroupByと同じようなオプションが使えますね。 

f:id:makkynm:20210814154531p:plain

Moving Averageのような使い方

 

おわりに

コロナ陽性者の推移情報って案外簡単にダウンロードできるものなんですね。最近コロナについて気になるなーという方、マスコミのデータではなくぜひ自分でデータを加工して分析してみると新たな発見があるかもしれません。

そういえば、以前KNIME社からいただいた、Contributor of the monthの粗品が家に届きました。I love Nodesと書いてあるTシャツとメモ帳でした!ありがとうございます〜

そろそろ記事にするネタがなくなっています。独力の限界ですかね。。自分の頭の中曝け出した気分です、、

講演依頼などお待ちしてます、、笑

 

 

 

KNIME Hubワークスペース

makkynm/Public – KNIME Hub

Twitter アカウント

まっきー | デジタル推進課 (@makkynm) | Twitter

 

KNIMEに関する本

KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、

本がいいなーと言う人はぜひ試してみてください。

 

参考リンク