KNIME + Python = 數據分析+報表全流程


Python 數據分析環境

數據分析領域有很多可選方案,例如SPSS傻瓜式分析工具,SAS專業性商業分析工具,R和python這類需要代碼編程類的工具。個人選擇是python這類,包括pandas,numpy,matplotlib,sklearn,keras。基於jupyter或者zeppelin作為編程界面,可以用python開發出比較清爽的數據分析報告。

總體來說,jupyter notebook編寫的分析結果基本上可以滿足要求,但是也有些弊端,例如無法做很好的presentation,雖然可以通過convert slides得到比較好的presentation膠片,但是無法展現直觀的數據流和數據分析流程。

理想的數據分析應該包括:清晰的數據流和數據分析流程;直觀的數據分析結果報告。

經過對多種開源方案的比較,我選擇使用knime+python的方案,可以有以下的優點

  • 利用python和相關數據分析庫的能力,對數據建模、分析、可視化,這塊基於Anaconda;
  • 利用knime的可視化數據流和report design能力,對數據ETL、建模、分析、報告。

knime + python

anaconda建立數據分析環境

一般需要使用到的庫包括:pandas,seanborn,numpy,scipy,statsmodel,matplotlib,keras,TensorFlow。

knime建立可視化數據流/report環境

KNIME的發展始於2004年1月,由康斯坦茨大學的軟件工程師團隊作為專有產品。由Michael Berthold領導的原始開發團隊來自硅谷的一家公司,為制葯行業提供軟件。最初的目標是創建一個模塊化,高度可擴展和開放的數據處理平台,從而輕松集成不同的數據加載,處理,轉換,分析和可視化探索模塊,而不必關注任何特定的應用領域。該平台旨在成為一個協作和研究平台,也應作為各種其他數據分析項目的集成平台。

Knime IDE基於eclipse開發,插件的安裝和eclipse一樣。我們需要結合knime和python做數據分析,需要安裝以下插件:

  • KNIME Python Integration,安裝后可以使用‘Python Script’和‘Python View’ node
  • KNIME Report Designer

knime 中“Python Script” node

Python Script node可以處理前一個節點數據,數據名稱是input_table,類型是pandas.DataFrame。DataFrame的操作api就是pandans的api。數據處理完后將結果輸出,輸出的數據是output_table.
舉個例子,選擇一個PythonScript node之后,右擊選擇Configure...,進入python代碼輸入框。

import pandas as pd
df = input_table

df = df[df['gender'] == 'M']

output_table = df

knime中“Python View” node

Python View節點對輸入數據做可視化,輸出圖片,輸入數據通用是input_table,可視化可以使用任意的python庫,首選當然是Matplotlib。輸出的圖片需要賦值給變量output_image。舉個例子:

import matplotlib.pyplot as plt
from io import BytesIO

df = input_table
df['score'].plot()

# output the image
buffer = BytesIO()
plt.saveFig(buffer, format='svg')
output_image = buffer.getvalue()

knime中“Image to Report” node

Python View節點輸出的圖片可以作為report的元素,借助“Image to Report”節點可以將圖片輸出,注意需要重新設置圖片大小,默認100x100尺寸太小。

knime中report模塊

report模塊基於birt,開發界面和BIRT一樣。優點是這里能夠將knime數據流中的Report節點數據/圖片自動引入到report中的“Data set view”。在設計report的時候可以引入圖片或者表格數據。

數據分析流程

BIRT報表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM