《數據驅動安全:數據安全分析、可視化和儀表盤》一2.2.1 理解Python數據分析和可視化生態係統
本節書摘來異步社區《數據驅動安全:數據安全分析、可視化和儀表盤》一書中的第2章 ,第2.2.1節,[美]傑·雅克布(Jay Jacobs)鮑布·魯迪斯(Bob Rudis) 著 薛傑 王占一 張卓 胡開勇 蔣夢颺 趙爽 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。
2.2.1 理解Python數據分析和可視化生態係統
雖然Python有很多可用的庫,但是僅有少數庫在處理數據方麵很出色,而我們仍舊稱這些庫是一個生態係統,是因為每一個庫的開發和支持來自不同的組織、社區或者個人,他們互相合作,卻組織鬆散。
如下是一些幾乎每一個項目都需要的庫:
Numpy(www.numpy.org/),可以為通用數據創造一個多維容器,支持對數據的多種操作,生成隨機數。它也能夠“廣播”對於Python對象的操作,使其代碼更簡潔和高效。
SciPy庫(www.scipy.org/scipylib/index.html),Numpy的上層封裝,便捷的麵向數組操作,能夠將Numpy廣播操作擴展到Python語言中的其他類型的數據元素。另外它還附帶統計相關的操作。
Maplotlib(https://matplotlib.org/),一個Python強力的通用庫使你的數據轉化為產品級的圖像。
pandas(https://pandas.pydata.org),該庫提供了更高的性能、易用的數據結構和數據分析工具;pandas將Data.Frame類型引入Python的命名空間裏,關於這個詳細的情況我們會在2.3節討論。雖然這樣會讓那些Python的死忠阿諛pandas,但是本質上來看,Python更像R語言,會使我們更簡單地在兩者間切換。
這些模塊,結合IPython,有時會被SciPy棧的核心組件引用(自從它包含了SciPy庫以後,這有點費解)。你可以從www.scipy.org/獲取更多關於棧的信息。
import段的代碼會載入庫裏的函數和變量,使其名稱和功能性在當前Python工作會話裏生效,as組件能使模塊裏的變量、函數和對象能簡單地被引用。
假如你的許多程序組件,都要引用每一個Scipy程序包裏的基本常規模塊,你可以創建一個文本作為基本模板,包含這些imports和其他(以後)能重複使用的代碼來節省打字的時間。
你將來當然會使用軟件包來連接數據庫、讀取文件、執行一些功能,你可以花一些時間在Python Package Index(PyPI)上細讀所有靈巧的模塊(https://pypi.python.org/pypi),但如果它是和SciPy棧有聯係的,它將會成為你數據科學之旅上一個常規的老夥計。
Python的“難點”
Python有兩個特性容易讓新手受挫。第一個“難點”是空白縮進,空格在Python代碼裏是非常重要的。對於代碼段,沒有{}或begin/end來標記開始和結束。你必須保持一致的縮進來區分一起執行的代碼段,不一致的縮進會導致解釋器輸出錯誤信息,程序代碼出現異常。現在大部分文本編輯器或者IDE都可以配置提示功能。
第二個“難點”是在使用變量前缺少聲明,將一個變量breaches初始化為某個值,不經意間引用該變量,breaches在解釋器裏不會出錯,但是輸出的結果卻不符合預期。
Canpy的包管理器(https://docs.enthought.com/canopy/quick-start/package_ manager.html)易於進行Python核心安裝和相關的模塊的實時更新。但是假如你選擇手動安裝,你需要依賴操作係統的包管理器來安裝的Python解釋器。升級獨立的附加模塊可以使用如下python代碼完成:
關於Python版本
本書的例子基於Python2.7,在編寫本書時,Canpy依然使用Python2.7。現在Python有兩個主要的版本,2.7.x和3.3.x,Python 3和Python2.7對默認行為做了很多改變,許多包也完成了更新以便與新版本兼容。但是仍舊有許多包隻兼容Python2.7,所以穩定性和廣泛性使得Python2.7版本成為了數據分析的好選擇。
對於Python2.7和Python3.3之間的改變可以參考《What抯 New In Python 3.0》(https://docs.python.org/3/whatsnew/3.0.html)。
最後更新:2017-06-21 17:32:07