⼤家好,本學期初,狗熊會成員討論了很久,到底應該送⼤家些什麼學(折)習(磨)禮物呢?熊⼤靈(腦)機(洞)⼀(大)動(開),要不我們整個Python的系列內容吧。R語千尋已經⼤受歡迎,沒有Python也不⾏呀。這時候,⼤家都沉默了!⼼⾥想的是,哪個倒黴蛋要接下這個任務呢。這時候熊⼤起身站起,指點江⼭,揮斥⽅瓊的說:政委就是你!我滿臉笑(淚)容(⽔)說:天將降⼤任於斯⼈也,必先苦其⼼志勞其筋⻣,學習Python!就這樣, 政委接受了這個任務,並成功的邀(壓)請(榨)了三位成員組成了「Python敢死隊」。本次內容是敢死隊成員:春豔同學與政委出品,歡迎品嘗。
Life is short, you need Python. ——Bruce Eckel
隨著信息技術的⽇趨成熟,⽆處不在的信息感知和採集終端使⼈們⽇常⽣活中的各項活動以多種豐富多彩的形式被當做數據收集整合。數據,已經滲透到當今每⼀個⾏業領域,並且正以⼀種難以想像的驚⼈速度不斷膨脹。⽆⼈否認,在⽇新⽉異的現代社會,「⼤數據」時代已經悄然降臨。
由於其在多個⾏業和學科領域中的⾼度滲透,並且在不同專業領域的數據研究中表現出⾼度融合的趨勢,⼤數據已經成為包含計算機科學和統計學在內的多個學科領域的新研究⽅向。同時,由於在⼤數據⽅⾯的研究尚且存在諸多誤區,⼈們迫切地需要對「⼤數據」時代的新現象、 理論、⽅法、技術、⼯具和實踐進⾏系統的研究。因⽽,「數據科學」應運⽽⽣。
為了全⾯了解數據科學的⾏業狀況,2017年kaggle(互聯⽹上最著名的數據科學競賽平臺之⼀)⾸次進⾏了全⾏業調查。從超過16,000名從業者的詳盡答卷中,對於⽬前業內的發展趨勢,我們能夠窺得⼀⼆。調查數據表明,在眾多數據科學和機器學習的分析⼯具中,Python是數據科學家們最常⽤的語⾔。
圖1 數據科學家們⼯作中常⽤⼯具排名
Python 是⼀個⾼層次的結合了解釋性、編譯性、互動性和⾯向對象的腳本語⾔。在使⽤中主 要具有以下優勢:
● 設計嚴格——可讀性⾮常強、易於維護並且收到⼤量⽤戶的喜愛;
● 庫很豐富——能夠⼴泛應⽤於各種問題的處理場景並且節省編寫底層代碼的時間;
● 免費開源——具有⾼度可移植屬性,在各平臺上都能順利⼯作;
● 可擴展性——能夠調⽤C/C++的代碼以實現快速運⾏或對算法的加密;
● 可嵌⼊性——能夠被集成到C/C++從⽽給程序⽤戶提供腳本功能。
There should be one-- and preferably only one --obvious way to do it.
—— Tim Peters
由於Python以「優雅」、「明確」、「簡單」為設計哲學,閱讀⼀個良好的Python程序就感覺像是在讀英語⼀樣,所以Python程序看上去總是簡單易懂,對初學者⾮常友好。因⽽以此為數據科學的⼊⻔⼯具是⾮常不錯的選擇。
圖2 同時使⽤Python和R的數據科學家認為應該選擇的數據科學⼊⻔⼯具排名
看到這⾥,你⼼動了嗎?是否想學習Python好⼀展拳腳,畢竟⼈⽣苦短,你需要Python。這⾥還是悄悄告訴你,數據科學家⼯作不是簡單的使⽤某⼀種語⾔,⽽是在⾃⼰的數據科學環境中,利⽤⾃⼰的數據思維實現數據科學實踐的過程。所以,在進⼊Python的學習之前,咱們最緊要的事情是構建能夠讓數據科學家輕鬆⼯作的數據科學環境。在這個環境中,你可以輕鬆使⽤各種數據科學的⼯具,讓你暢遊其中「⽆法⾃拔」。這就是下⾯要介紹的Anaconda數據科學套件。
確定將Python作為數據科學的⼊⻔⼯具之後,我們當然可以選擇下載官⽅的Python使⽤,但Python令⼈頭疼的環境問題以及多種需要安裝的⼯具包通常會成為初學者的阻礙。
不少初學者在Python的安裝階段就被紛⾄沓來的報錯信息搞得頭⽪發麻,即使最終靠著⽹絡上諸位「⼤神」的指示,踩著前⼈⾛過的腳印稀⾥糊塗地解決問題,也不免會費上好⼀番⼯夫, ⾛許多彎路。原本⾼漲的學習熱情也因此冷卻了⼤半,到時候這本書的名字就真是「Python從⼊⻔到放棄」了。
此時,Anaconda數據科學套件的出現,可謂是⼴⼤初學者的⼀⼤「福⾳」。
所謂「Anaconda套件」,通俗來講是⼀個打包的集合,⾥⾯預裝好了conda、某個版本的python、眾多packages以及科學計算⼯具等,所以也稱為Python的⼀種發⾏版。由於包含的內容⽐較豐富,因此Anaconda對存儲空間有⼀定的要求。⽽空間有限的⽤戶,可以選擇Miniconda,它只包含最基本的內容——python與conda,以及相關的必需依賴項。
圖3 Anaconda套件所包含的部分內容
Anaconda⾥除了Python外,⼀個⾮常重要的組成部分就是conda。conda是⼀個開源的軟體包管理和環境管理系統,能夠安裝多個版本的軟體包及其依賴關係。由於conda的設計理念在於把⼏乎所有的⼯具、第三⽅包都當做package對待,甚⾄包括Python和conda⾃身,因此conda打破了包管理和環境管理的約束,能夠實現各版本Python和package之間的輕鬆切換。這種強⼤的設計理念帶來了Anaconda套件的兩⼤優勢。
虛擬環境管理:在進⾏⽇常的數據分析⼯作時,對不同的項⽬我們可能會需要使⽤不同版本的Python以及不同版本的⼯具包。Python2和Python3在語法上的不兼容使我們必須⾯對版本上的衝突。⽽使⽤conda建⽴不同版本的虛擬環境能夠幫助我們很好地解決這⼀問題,對要求不同的項⽬進⾏隔離。
包管理:使⽤conda可以對多種⼯具包進⾏更新、安裝、卸載操作,並且Anaconda在安裝時已經預先集成了numpy、pandas、scipy、scikit-learn等在數據分析過程中常⽤的包。除此之外,conda還可以對⾮Python的包進⾏安裝管理,⽐如在新版的Anaconda中,我 們可以安裝R語⾔的集成開發環境Rstudio。對於想要同時使⽤Python和R的⼈來說,可真是美滋滋了。
圖4 Anaconda官⽹slogan截圖
Anaconda號稱是最受歡迎的Python和R數據分析集成環境。它通過對虛擬環境、⼯具包、 Python版本的管理,⼤⼤簡化了我們的⼯作流程。同時,Anaconda也是適⽤於企業級⼤數據 分析的Python⼯具。它所包含的多個數據科學相關的開源包⼴泛覆蓋了數據可視化、機器學 習、深度學習等多個⽅⾯。
⼀⾔以蔽之,選擇Anaconda數據科學套件將會是你「⼊坑」Python的良好開端。
下載Anaconda最簡單直接的⽅式當然是去官⽹。
官⽹上提供了Windows、Mac、Linux三種系統下的Anaconda安裝包,並且對每個系統都提供 了分別對應Python3.7和Python2.7的兩個版本。此處推薦安裝對應Python3.7的版本,畢竟官 ⽅已經宣布2.7的版本只會維護到2020年。不過在後⾯我們也會介紹,安裝哪個版本在本質上並沒有太⼤的區別,因為通過環境管理,我們可以很⽅便地切換運⾏時的Python版本。
圖5 Anaconda官⽹下載界⾯
然⽽,官⽹下載通常會遇到的⼀個問題是——速度慢到令⼈發指。尤其當我們花費⼤量的時間好不容易下載安裝好了,想要安裝或者更新其中的包時,如果收到由於速度過於緩慢⽽斷開連接從⽽安裝失敗的報錯信息,可⼜是⼀段⾟酸⾎淚史。
此時,國內的清華⼤學開源軟體鏡像站將會提供給你下載Anaconda的「新姿勢」。我們可以在這⾥選擇適宜⾃⼰系統的Anaconda版本進⾏下載安裝,相⽐之下速度會提升不少。
圖6 清華⼤學開源軟體鏡像站anaconda下載界⾯截圖
下載好安裝包之後,安裝的過程按照提示和說明完成即可。值得注意的是,在安裝路徑的選擇 中,請確保你的路徑中不包含中⽂、空格或其他⾮英語常⽤字符。否則誰也不能保證你在後續 的使⽤中不會被坑得暈頭轉向。
Windows系統下的安裝除了需要選擇安裝路徑外,還有兩個需要額外確認的地⽅。
● 是否要將Anaconda添加到PATH環境變量中?
● 是否要將下載的Anaconda中對應的Python版本設置為默認版本?
圖7 Windows系統下Anaconda安裝過程截圖
對第⼀個問題,建議不要勾選,即不添加。因為勾選後可能會對其他軟體產⽣⼲擾。對第⼆個問題,可以根據⾃⼰平時使⽤Python版本的實際情況進⾏勾選。
安裝完成後,打開cmd,輸⼊conda命令測試安裝結果。
圖8 Windows系統下Anaconda安裝結果測試截圖
成功安裝後會在【開始】菜單中發現Anaconda的⽂件夾,下拉後有⼏個應⽤:
Anaconda Cloud:管理公共或者私有python、jupyter notebook、conda、環境和 packages的地⽅,可以⽅便分享和追蹤。
Anaconda Navigtor:⽤於管理⼯具包和環境的可視化GUI(Graphical User Interface,簡 稱 GUI,圖形⽤戶界⾯),後續涉及的眾多管理命令也可以在 Navigator 中⼿⼯實現。
Anaconda Prompt: 也被稱為終端,⽤於管理⼯具包和環境的命令⾏界⾯,可以便捷的 操作conda環境。
Jupyter Notebook:基於web的交互式計算環境,可以編輯易於⼈們閱讀的⽂檔,⽤於展 示數據分析的過程。後⾯我們會具體重點介紹使⽤它!
IPython : Python 的交互式 shell,⽐默認的Python Shell 好⽤得多,⽀持變量⾃動補 全,⾃動縮進,⽀持 bash shell 命令,內置了許多很有⽤的功能和函數。
Jupyter Qtconsole:調⽤交互式命令臺,在很⼤程度上感覺像⼀個終端,但提供了許多 只能在GUI中使⽤的增強功能,例如內聯圖形,帶語法⾼亮的正確多⾏編輯,圖形化提示 等等。可以看作IPython的加強版。
Spyder:⼀個使⽤Python語⾔、開放原始碼的科學運算集成開發環境。Spyder可以跨平 臺,也可以使⽤附加組件擴充,⾃帶交互式⼯具以處理數據。
對Mac的⽤戶來說,安裝成功後在【Launchpad】中會出現Anaconda Navigtor的圖標,⽽ Mac系統⾃帶的終端即可⽤作Anaconda Prompt,打開終端,同樣輸⼊conda命令測試安裝 結果。
⽽上述提到的多個在Windows【開始】菜單中出現的其他應⽤,⽤戶可以選擇打開Anaconda Navigtor,在其中點擊進⼊,或者在終端中輸⼊相應的應⽤名稱命令打開應⽤。
圖9 Anaconda Navigtor主⻚界⾯
Navigtor和Prompt都是可⽤來管理環境和⼯具包的應⽤,區別在於:Navigtor是可視化的 GUI,對於不太擅⻓編程的新⼿來講⾮常友好;⽽Prompt則是命令⾏界⾯,對有⼀定編程基 礎的⼈來說⾮常親切。更簡單⼀點來講,如果偏愛直觀類似Web界⾯的選項選擇和⿏標點擊, 推薦使⽤Navigtor;如果偏愛敲代碼帶來的樂趣,Prompt會帶給你良好的體驗。
圖10 Anaconda Navigtor環境及⼯具包管理界⾯
據上圖能夠看出,Navigtor對於環境管理和⼯具包的管理⾮常直觀簡潔,點擊相應位置即可完 成環境及⼯具包的搜索、創建、刪除、更新等系列操作,因⽽在此處不對此進⾏詳細說明。值 得⼀提的是,Navigtor除了提供環境和包管理功能外,其中的學習和社區版塊也給我們提供了 很多的學習和互動資源,有興趣的⼩夥伴們不妨探索⼀番,或許能有意外的收穫。
圖11 Anaconda Navigtor學習版塊界⾯
好了,今天就講到這⾥。接下我們爭取每⼀周⻅⼀⾯,⼀起利⽤Python完成數據科學的學習。
PS:作業下載安裝Anaconda到你的電腦,並測試安裝成功。啟動Navigtor,並新建一個自己的數據科學環境名字為MyDS。
今天就講到這裡,後續再繼續深入,希望大家把Python練習起來。