安排上!數(shù)據(jù)科學(xué)中必須了解的Python基礎(chǔ)庫
正在學(xué)習(xí)數(shù)據(jù)科學(xué)的你希望快刀斬亂麻解決其中的一些問題嗎?那我們果斷要把目光投向Python。

本文將介紹一些基礎(chǔ)的數(shù)據(jù)科學(xué)庫,學(xué)會之后你也可以6到飛起。
核心庫
Python有三個核心數(shù)據(jù)科學(xué)庫,在此基礎(chǔ)上還創(chuàng)建了許多其他的庫。這三個核心數(shù)據(jù)科學(xué)庫分別為:
- Numpy
- Scipy
- Matplotlib
簡單起見,可以把Numpy視為首選數(shù)組。Numpy數(shù)組在許多方面都與標準Python列表不同,但有幾點需要記住,那就是Numpy數(shù)組比標準Python列表運算速度更快、所占空間更少、功能更多。但同時也需注意,這些數(shù)組的大小和類型是固定的,可以在創(chuàng)建數(shù)組時進行定義。同時,它不像列表那樣可以無限添加新值。
Scipy在Numpy的基礎(chǔ)上,提供了許多優(yōu)化、統(tǒng)計和線性代數(shù)處理等功能。雖然Numpy也有類似的功能,但個人更喜歡Scipy的功能。想要計算相關(guān)系數(shù)或創(chuàng)建一些正態(tài)分布數(shù)據(jù)嗎?Scipy簡直就是為你量身定制的。
和其他數(shù)據(jù)科學(xué)庫相比,Matplotlib可能略遜一籌,但它是Python中繪圖的核心庫。功能強大,可以在需要時進行有效控制。
第二代庫
核心庫非常棒,也很常用。不過,還有三個基于核心庫的第二代庫,它們提供的功能更多,使用的代碼更少。
如果你一直在學(xué)習(xí)數(shù)據(jù)科學(xué)卻沒聽說過Scikit-learn,那我也無話可說。Scikit-learn是Python中的機器學(xué)習(xí)庫。它擁有強大的社區(qū)支持、歸檔功能和一個統(tǒng)一且容易使用的API。該庫專注于“核心”機器學(xué)習(xí),包括結(jié)構(gòu)化數(shù)據(jù)的回歸、分類和聚類。但它并不能用于深度學(xué)習(xí)或貝葉斯機器學(xué)習(xí)等方面。
Pandas的創(chuàng)建是為了簡化Python中的數(shù)據(jù)分析。Pandas讓加載結(jié)構(gòu)化數(shù)據(jù)、計算統(tǒng)計數(shù)據(jù)、切割數(shù)據(jù)變得非常容易。在數(shù)據(jù)挖掘和分析階段,它是一個不可或缺的工具。但個人不建議在數(shù)據(jù)生成階段使用Pandas,因為它通常無法很好地擴展到大型數(shù)據(jù)集。不過可以將Pandas代碼轉(zhuǎn)換為原始的Numpy數(shù)組,這可以顯著提高數(shù)據(jù)生產(chǎn)的速度。
盡管Matplotlib不是可視化最好看的,但是Seaborn 可以很容易創(chuàng)建出漂亮的可視化數(shù)據(jù)。Seaborn是基于Matplotlib創(chuàng)建的,因此仍然可以使用Matplotlib功能增加或編輯Seaborn圖表。它還使復(fù)雜圖表類型的創(chuàng)建變得更加容易。看看下面的圖片,可以找到一些靈感:
深度學(xué)習(xí)
隨著深度學(xué)習(xí)的迅速發(fā)展,不說一說該領(lǐng)域中較好的Python包是不明智的。
本人是Pytorch的鐵桿粉絲。如果想在學(xué)習(xí)數(shù)據(jù)科學(xué)庫的同時開始深度學(xué)習(xí),從而讓很先進的深度學(xué)習(xí)算法變得相對容易,那么Pytorch是不二之選。Pytorch正逐漸成為研究和實現(xiàn)大量功能的標準深度學(xué)習(xí)庫,使其在數(shù)據(jù)生成用例中愈加完善。這些實例也提供了許多很好的入門教程 。
個人看來,Keras 是第一個真正讓深度學(xué)習(xí)變得觸手可及的數(shù)據(jù)科學(xué)庫。你可以用10行非常容易閱讀和理解的代碼來創(chuàng)建并訓(xùn)練一個深度學(xué)習(xí)模型。但它的缺點是,高層次的抽象很難實現(xiàn)Keras當前不支持的新研究(盡管他們正在該領(lǐng)域上不斷改進)。它同時還支持多個后端,即Tensorflow和CNTK。
Tensorflow 是由谷歌創(chuàng)建的,為深度學(xué)習(xí)的生產(chǎn)提供了很強大的支持。個人看來,最初版本的Tensorflow相當笨拙,但是他們學(xué)到了很多東西,Tensorflow 2.0讓深度學(xué)習(xí)的門檻變得越來越低。當Pytorch為深度學(xué)習(xí)提供更多的生產(chǎn)支持時,Tensorflow則大大提高了深度學(xué)習(xí)的可用性。
統(tǒng)計
我想以Python中的兩大統(tǒng)計模型庫結(jié)束全文。
如果你用過R,你可能會困惑為什么Scikit-learn沒有在計算回歸系數(shù)時給出p值。如果是這樣,你需要看一下statsmodels。個人看來,statsmodels對統(tǒng)計模型和測試提供了很好的支持,甚至還支持很多R語法。
概率編程和建模非常有趣。如果你不熟悉這個領(lǐng)域,可以查看黑客的貝葉斯方法,也可以使用PyMC3。PyMC3讓定義的概率模型變得非常直觀,并給許多先進的模型提供許多支持。
飛起來
在我之前,無人相信Python中還有許多令人驚艷的數(shù)據(jù)科學(xué)庫。而本文的目的就是關(guān)注最基礎(chǔ)的數(shù)據(jù)科學(xué)庫。有了Python和這些出色的數(shù)據(jù)科學(xué)庫,你會對自己可以取得的成就驚嘆不已。我希望本文能夠成為你涉足數(shù)據(jù)科學(xué)的一個很好的起點,而這也僅是你即將發(fā)現(xiàn)所有令人驚艷的數(shù)據(jù)科學(xué)庫的開始。