盤點數(shù)據(jù)科學(xué)流行的29個Python庫
本文轉(zhuǎn)載自微信公眾號「大數(shù)據(jù)DT」,作者保羅·戴特爾。轉(zhuǎn)載本文請聯(lián)系大數(shù)據(jù)DT公眾號。
我們都著眼于如何使用現(xiàn)有的庫來避免重復(fù)工作,從而使程序開發(fā)工作事半功倍。通常,開發(fā)大量原始代碼是一個費時費力的工作,為了避免這種情況,我們會盡可能多地使用庫中已有的類來創(chuàng)建對象,通常僅需要一行代碼。因此,庫能夠幫助我們使用適量的代碼執(zhí)行重要的任務(wù)。
本文介紹數(shù)據(jù)科學(xué)中會經(jīng)常使用多種Python標準庫、數(shù)據(jù)科學(xué)庫和第三方庫。
01 Python標準庫
16 / 29
Python標準庫提供了豐富的功能,包括文本/二進制數(shù)據(jù)處理、數(shù)學(xué)運算、函數(shù)式編程、文件/目錄訪問、數(shù)據(jù)持久化、數(shù)據(jù)壓縮/歸檔、加密、操作系統(tǒng)服務(wù)、并發(fā)編程、進程間通信、網(wǎng)絡(luò)協(xié)議、JSON / XML /其他Internet數(shù)據(jù)格式、多媒體、國際化、GUI、調(diào)試、分析等。下面列出了一部分Python標準庫模塊。
- collections:建立在列表、元組、字典和集合基礎(chǔ)上的加強版數(shù)據(jù)結(jié)構(gòu)。
- csv:處理用逗號分隔值的文件。
- datetime, time:日期和時間操作。
- decimal:定點或浮點運算,包括貨幣計算。
- doctest:通過驗證測試或嵌入在docstring中的預(yù)期結(jié)果進行簡單的單元測試。
- json:處理用于Web服務(wù)和NoSQL文檔數(shù)據(jù)庫的JSON(JavaScript Object Notation)數(shù)據(jù)。
- math:常見的數(shù)學(xué)常量和運算。
- os:與操作系統(tǒng)進行交互。
- queue:一種先進先出的數(shù)據(jù)結(jié)構(gòu)。
- random:偽隨機數(shù)操作。
- re:用于模式匹配的正則表達式。
- sqlite3:SQLite關(guān)系數(shù)據(jù)庫訪問。
- statistics:數(shù)理統(tǒng)計函數(shù),如均值、中值、眾數(shù)和方差等。
- string:字符串操作。
- sys:—命令行參數(shù)處理,如標準輸入流、輸出流和錯誤流。
- timeit:性能分析。
Python擁有一個龐大且仍在快速增長的開源社區(qū),社區(qū)中的開發(fā)者來自許多不同的領(lǐng)域。該社區(qū)中有大量的開源庫是Python受歡迎的最重要的原因之一。
許多任務(wù)只需要幾行Python代碼就可以完成,這會令人感到很神奇。下面列出了一些流行的數(shù)據(jù)科學(xué)庫。
02 科學(xué)計算與統(tǒng)計
3 / 29
- NumPy(Numerical Python):Python沒有內(nèi)置的數(shù)組數(shù)據(jù)結(jié)構(gòu)。它提供的列表類型雖然使用起來更方便,但是處理速度較慢。NumPy提供了高性能的ndarray數(shù)據(jù)結(jié)構(gòu)來表示列表和矩陣,同時還提供了處理這些數(shù)據(jù)結(jié)構(gòu)的操作。詳細教程請戳??高能!8段代碼演示Numpy數(shù)據(jù)運算的神操作
- SciPy(Scientific Python):SciPy基于NumPy開發(fā),增加了用于科學(xué)處理的程序,例如積分、微分方程、額外的矩陣處理等。scipy.org負責管理SciPy和NumPy。詳細教程請戳??3段極簡代碼帶你入門Python科學(xué)計算庫SciPy
- StatsModels:為統(tǒng)計模型評估、統(tǒng)計測試和統(tǒng)計數(shù)據(jù)研究提供支持。
03 數(shù)據(jù)處理與分析
1 / 29
pandas:一個非常流行的數(shù)據(jù)處理庫。pandas充分利用了NumPy的ndarray類型,它的兩個關(guān)鍵數(shù)據(jù)結(jié)構(gòu)是Series(一維)和DataFrame(二維)。詳細教程請戳??Pandas最詳細教程來了!
04 可視化
2 / 29
- Matplotlib:可高度定制的可視化和繪圖庫。Matplotlib可以繪制正規(guī)圖、散點圖、柱狀圖、等高線圖、餅圖、矢量場圖、網(wǎng)格圖、極坐標圖、3D圖以及添加文字說明等。詳細教程請戳??Python實操:手把手教你用Matplotlib把數(shù)據(jù)畫出來
- Seaborn:基于Matplotlib構(gòu)建的更高級別的可視化庫。與Matplotlib相比,Seaborn改進了外觀,增加了可視化的方法,并且可以使用更少的代碼創(chuàng)建可視化。
05 機器學(xué)習、深度學(xué)習和強化學(xué)習
4 / 29
- scikit-learn:一個頂級的機器學(xué)習庫。機器學(xué)習是AI的一個子集,深度學(xué)習則是機器學(xué)習的一個子集,專注于神經(jīng)網(wǎng)絡(luò)。
- Keras:最易于使用的深度學(xué)習庫之一。Keras運行在TensorFlow(谷歌)、CNTK(微軟的深度學(xué)習認知工具包)或Theano(蒙特利爾大學(xué))之上。
- TensorFlow:由谷歌開發(fā),是使用最廣泛的深度學(xué)習庫。TensorFlow與GPU(圖形處理單元)或谷歌的定制TPU(Tensor處理單元)配合使用可以獲得最佳的性能。TensorFlow在人工智能和大數(shù)據(jù)分析中有非常重要的地位,因為人工智能和大數(shù)據(jù)對數(shù)據(jù)處理的需求非常巨大。本書使用TensorFlow內(nèi)置的Keras版本。詳細教程請戳??TensorFlow是什么?怎么用?終于有人講明白了
- OpenAI Gym:用于開發(fā)、測試和比較強化學(xué)習算法的庫和開發(fā)環(huán)境。
06 自然語言處理
3 / 29
- NLTK(Natural Language Toolkit):用于完成自然語言處理(NLP)任務(wù)。
- TextBlob:一個面向?qū)ο蟮腘LP文本處理庫,基于NLTK和模式NLP庫構(gòu)建,簡化了許多NLP任務(wù)。
- Gensim:功能與NLTK類似。通常用于為文檔合集構(gòu)建索引,然后確定另一個文檔與索引中每個文檔的相似程度。
關(guān)于作者:保羅·戴特爾,Deitel&Associates公司首席執(zhí)行官兼首席技術(shù)官,畢業(yè)于麻省理工學(xué)院,擁有38年的計算經(jīng)驗。保羅是世界上最有經(jīng)驗的編程語言培訓(xùn)師之一,自1992年以來一直針對軟件開發(fā)人員教授專業(yè)課程。他服務(wù)過的國際客戶包括思科、IBM、西門子、Oracle、戴爾、富達、美國國家航空航天局肯尼迪航天中心等。
本文摘編自《Python程序設(shè)計:人工智能案例實踐》,經(jīng)出版方授權(quán)發(fā)布。