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的時候可以引入圖片或者表格數據。