盤點最重要的7個Python庫

回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書

導(dǎo)讀:對于那些對Python數(shù)據(jù)生態(tài)系統(tǒng)不太熟悉的人士琼锋,我將簡要地介紹一部分重要的庫南蓬。

image](https://upload-images.jianshu.io/upload_images/26898604-e943687d85d36b89?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

01 NumPy

http://numpy.org

image

NumPy是Numerical Python的簡寫狈定,是Python數(shù)值計算的基石。它提供多種數(shù)據(jù)結(jié)構(gòu)拼坎、算法以及大部分涉及Python數(shù)值計算所需的接口怎静。NumPy還包括其他內(nèi)容:

快速、高效的多維數(shù)組對象ndarray

基于元素的數(shù)組計算或數(shù)組間數(shù)學(xué)操作函數(shù)

用于讀寫硬盤中基于數(shù)組的數(shù)據(jù)集的工具

線性代數(shù)操作穆刻、傅里葉變換以及隨機(jī)數(shù)生成

成熟的C語言API置尔,允許Python拓展和本地的C或C++代碼訪問NumPy的數(shù)據(jù)結(jié)構(gòu)和計算設(shè)施。

除了NumPy賦予Python的快速數(shù)組處理能力之外氢伟,NumPy的另一個主要用途是在算法和庫之間作為數(shù)據(jù)傳遞的數(shù)據(jù)容器榜轿。對于數(shù)值數(shù)據(jù),NumPy數(shù)組能夠比Python內(nèi)建數(shù)據(jù)結(jié)構(gòu)更為高效地存儲和操作數(shù)據(jù)朵锣。

此外谬盐,用底層語言編寫的庫,例如用C或Fortran編寫的庫诚些,可以在NumPy數(shù)組存儲的數(shù)據(jù)上直接操作飞傀,而無須將數(shù)據(jù)復(fù)制到其他內(nèi)存中后再操作皇型。因此,許多Python的數(shù)值計算工具將NumPy數(shù)組作為基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)砸烦,或與NumPy進(jìn)行無縫互操作弃鸦。

02 pandas

image

pandas提供了高級數(shù)據(jù)結(jié)構(gòu)和函數(shù),這些數(shù)據(jù)結(jié)構(gòu)和函數(shù)的設(shè)計使得利用結(jié)構(gòu)化幢痘、表格化數(shù)據(jù)的工作快速唬格、簡單、有表現(xiàn)力颜说。它出現(xiàn)于2010年购岗,幫助Python成為強(qiáng)大、高效的數(shù)據(jù)分析環(huán)境门粪。常用的pandas對象是DataFrame喊积,它是用于實現(xiàn)表格化、面向列玄妈、使用行列標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)乾吻;以及Series,一種一維標(biāo)簽數(shù)組對象拟蜻。

pandas將表格和關(guān)系型數(shù)據(jù)庫(例如SQL)的靈活數(shù)據(jù)操作能力與NumPy的高性能數(shù)組計算的理念相結(jié)合溶弟。它提供復(fù)雜的索引函數(shù),使得數(shù)據(jù)的重組瞭郑、切塊、切片鸭你、聚合屈张、子集選擇更為簡單。由于數(shù)據(jù)操作袱巨、預(yù)處理阁谆、清洗在數(shù)據(jù)分析中是重要的技能,pandas將是重要主題愉老。

介紹一點背景知識场绿,早在2008年,我在一家量化投資企業(yè)——AQR資本管理公司供職時嫉入,便開始了pandas的開發(fā)焰盗。那時候,我有一些獨特的需求是工具清單上任何單個工具無法滿足的:

帶有標(biāo)簽軸咒林,支持自動化或顯式數(shù)據(jù)對齊功能的數(shù)據(jù)結(jié)構(gòu)——這可以防止未對齊數(shù)據(jù)和不同數(shù)據(jù)源的不同索引數(shù)據(jù)所引起的常見錯誤

集成時間序列函數(shù)功能

能夠同時處理時間序列數(shù)據(jù)和非時間序列數(shù)據(jù)的統(tǒng)一數(shù)據(jù)結(jié)構(gòu)

可以保存元數(shù)據(jù)的算術(shù)操作和簡化

靈活處理缺失數(shù)據(jù)

流行數(shù)據(jù)庫(例如基于SQL的數(shù)據(jù)庫)中的合并等關(guān)系型操作

我想將以上的工作在同一個地方完成熬拒,最好還能在一個擁有通用軟件開發(fā)能力的語言中實現(xiàn)。Python就是一個很好的備選項垫竞,但是那時候并沒有這類數(shù)據(jù)結(jié)構(gòu)的整合集澎粟,也沒有能提供相關(guān)功能的工具蛀序。結(jié)果就是pandas最初被開發(fā)出來用于解決金融和商業(yè)分析問題,pandas尤其擅長深度時間序列和處理商業(yè)進(jìn)程中產(chǎn)生的時間索引數(shù)據(jù)活烙。最后徐裸,如果你的時間不是很緊張,并且又想快速的提高啸盏,最重要的是不怕吃苦重贺,建議你可以聯(lián)系維:762459510 ,那個真的很不錯宫补,很多人進(jìn)步都很快檬姥,需要你不怕吃苦哦!大家可以去添加上看一下~

使用R語言進(jìn)行統(tǒng)計計算的用戶對DataFrame的名稱會非常熟悉粉怕,因為這個對象是根據(jù)相似的R data.frame對象進(jìn)行命名的健民。與Python不同的是,數(shù)據(jù)框在R語言中是標(biāo)準(zhǔn)庫中的內(nèi)容贫贝。因此秉犹,pandas中的很多特征通常與R核心的實現(xiàn)或者R的附加庫提供的功能一致。

pandas的名字的來源是panel data稚晚,這是計量經(jīng)濟(jì)學(xué)中針對多維結(jié)構(gòu)化數(shù)據(jù)集的術(shù)語崇堵。pandas也是Python data analysis(Python數(shù)據(jù)分析)自身的簡寫短語。

03 matplotlib

http://matplotlib.org

matplotlib是最流行的用于制圖及其他二維數(shù)據(jù)可視化的Python庫客燕。它由John D. Hunter創(chuàng)建鸳劳,目前由一個大型開發(fā)者團(tuán)隊維護(hù)。matplotlib被設(shè)計為適合出版的制圖工具也搓。

對于Python編程者來說也有其他可視化庫赏廓,但matplotlib依然使用最為廣泛,并且與生態(tài)系統(tǒng)的其他庫良好整合傍妒。我認(rèn)為將它作為默認(rèn)可視化工具是一個安全的選擇幔摸。

04 IPython與Jupyter

http://ipython.org

http://jupyter.org

image

IPython項目開始于2001年,由Fernando Pérez發(fā)起颤练,旨在開發(fā)一個更具交互性的Python解釋器既忆。在過去的16年中,它成為Python數(shù)據(jù)技術(shù)棧中最重要的工具之一嗦玖。

盡管它本身并不提供任何計算或數(shù)據(jù)分析工具患雇,它的設(shè)計側(cè)重于在交互計算和軟件開發(fā)兩方面將生產(chǎn)力最大化。它使用了一種執(zhí)行-探索工作流來替代其他語言中典型的編輯-編譯-運(yùn)行工作流宇挫。它還提供針對操作系統(tǒng)命令行和文件系統(tǒng)的易用接口庆亡。由于數(shù)據(jù)分析編碼工作包含大量的探索、試驗捞稿、試錯和遍歷又谋,IPython可以使你更快速地完成工作拼缝。

2014年,F(xiàn)ernando和IPython團(tuán)隊發(fā)布了Jupyter項目彰亥。Jupyter項目旨在設(shè)計一個適用于更多語言的交互式計算工具咧七。IPython web notebook 則成為Jupyter notebook,可以支持超過40種編程語言任斋。IPython系統(tǒng)目前可以作為一個內(nèi)核(一種編程語言模式)用于在 Jupyter 中使用Python继阻。最后,如果你的時間不是很緊張废酷,并且又想快速的提高瘟檩,最重要的是不怕吃苦,建議你可以聯(lián)系維:762459510 澈蟆,那個真的很不錯墨辛,很多人進(jìn)步都很快,需要你不怕吃苦哦趴俘!大家可以去添加上看一下~

IPython自身已成為 Jupyter開源項目中的一個組件睹簇,后者提供交互性、探索性的高效環(huán)境寥闪。IPtyhon最古老太惠、最簡單的“模式”就是一個加強(qiáng)版的Python命令行,用于提高編寫疲憋、測試凿渊、調(diào)試Python代碼的速度。

你也可以通過基于Web缚柳、支持多語言的代碼“筆記本”——Jupyter Notebook來使用IPython系統(tǒng)嗽元。IPython命令行和 Jupyter notebook對于數(shù)據(jù)探索和可視化非常有用。

Jupyter notebook系統(tǒng)允許你使用Markdown和HTML創(chuàng)建包含代碼和文本的富文檔喂击。其他編程語言也針對Jupyter實現(xiàn)了內(nèi)核,允許你在Jupyter中使用多種語言而不僅僅是Python淤翔。

對我個人來說翰绊,IPython涉及我工作的大部分內(nèi)容,包括運(yùn)行旁壮、調(diào)試监嗜、測試代碼。

05 SciPy

http://scipy.org

image

SciPy是科學(xué)計算領(lǐng)域針對不同標(biāo)準(zhǔn)問題域的包集合抡谐。以下是SciPy中包含的一些包:

scipy.integrate

數(shù)值積分例程和微分方程求解器

scipy.linalg

線性代數(shù)例程和基于numpy.linalg的矩陣分解

scipy.optimize

函數(shù)優(yōu)化器(最小化器)和求根算法

scipy.signal

信號處理工具

scipy.sparse

稀疏矩陣與稀疏線性系統(tǒng)求解器

scipy.special

SPECFUN的包裝器裁奇。SPECFUN是Fortran語言下實現(xiàn)通用數(shù)據(jù)函數(shù)的包,例如gamma函數(shù)麦撵。

scipy.stats

標(biāo)準(zhǔn)的連續(xù)和離散概率分布(密度函數(shù)刽肠、采樣器溃肪、連續(xù)分布函數(shù))、各類統(tǒng)計測試音五、各類描述性統(tǒng)計惫撰。

SciPy與NumPy一起為很多傳統(tǒng)科學(xué)計算應(yīng)用提供了一個合理、完整躺涝、成熟的計算基礎(chǔ)厨钻。

06 scikit-learn

http://scikit-learn.org

image

scikit-learn項目誕生于2010年,目前已成為Python編程者首選的機(jī)器學(xué)習(xí)工具包坚嗜。僅僅七年夯膀,scikit-learn就擁有了全世界1 500位代碼貢獻(xiàn)者。其中包含以下子模塊苍蔬。

分類:SVM诱建、最近鄰、隨機(jī)森林银室、邏輯回歸等

回歸:Lasso涂佃、嶺回歸等

聚類:k-means、譜聚類等

降維:PCA蜈敢、特征選擇、矩陣分解等

模型選擇:網(wǎng)格搜索抓狭、交叉驗證、指標(biāo)矩陣

預(yù)處理:特征提取午笛、正態(tài)化

scikit-learn與pandas、statsmodels苗桂、IPython一起使Python成了高效的數(shù)據(jù)科學(xué)編程語言药磺。

07 statsmodels

http://statsmodels.org

image

statsmodels是一個統(tǒng)計分析包煤伟。它源自斯坦福大學(xué)統(tǒng)計學(xué)教授Jonathan Taylor 利用R語言實現(xiàn)的各類分析模型。Skipper Seabold 和 Josef Perktold早在2010年便創(chuàng)建了新的statsmodels項目便锨。自那之后該項目迅速成長围辙,擁有大量活躍用戶和貢獻(xiàn)者者。最后放案,如果你的時間不是很緊張,并且又想快速的提高吱殉,最重要的是不怕吃苦厘托,建議你可以聯(lián)系維:762459510 贩虾,那個真的很不錯,很多人進(jìn)步都很快伊群,需要你不怕吃苦哦策精!大家可以去添加上看一下~

Nathaniel Smith 開發(fā)了Patsy項目,為R語言公式系統(tǒng)所驅(qū)動的statsmodels包提供公式咽袜、模型規(guī)范框架。

與scikit-learn相比谜嫉,statsmodels包含經(jīng)典的(高頻詞匯)統(tǒng)計學(xué)凹联、經(jīng)濟(jì)學(xué)算法。它所包含的模型如下住闯。

回歸模型:線性回歸澳淑、通用線性模型、魯棒線性模型杠巡、線性混合效應(yīng)模型等

方差分析(ANOVA )

時間序列分析:AR、ARMA蚌铜、ARIMA兄一、VAR等模型

非參數(shù)方法:核密度估計识腿、核回歸

統(tǒng)計模型結(jié)果可視化

statsmodels更專注于統(tǒng)計推理,提供不確定性評價和p值參數(shù)骂束。相反,scikit-learn更專注于預(yù)測展箱。

關(guān)于作者:韋斯·麥金尼(Wes McKinney)是流行的Python開源數(shù)據(jù)分析庫pandas的創(chuàng)始人。他是一名活躍的演講者攀隔,也是Python數(shù)據(jù)社區(qū)和Apache軟件基金會的Python/C++開源開發(fā)者栖榨。目前他在紐約從事軟件架構(gòu)師工作。

本文摘編自《利用Python進(jìn)行數(shù)據(jù)分析》(原書第2版)满粗,經(jīng)出版方授權(quán)發(fā)布愚争。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轰枝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狸膏,更是在濱河造成了極大的恐慌,老刑警劉巖贤旷,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幼驶,死亡現(xiàn)場離奇詭異韧衣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)畅铭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門硕噩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辉懒,你說我怎么就攤上這事】袅” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵纲岭,是天一觀的道長嗽仪。 經(jīng)常有香客問我,道長沽翔,這世上最難降的妖魔是什么窿凤? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任雳殊,我火速辦了婚禮,結(jié)果婚禮上夯秃,老公的妹妹穿的比我還像新娘。我一直安慰自己介陶,他們只是感情好色建,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著某残,像睡著了一般陵吸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澳厢,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼谆构。 笑死,一個胖子當(dāng)著我的面吹牛呵晨,可吹牛的內(nèi)容都是我干的熬尺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼季二,長吁一口氣:“原來是場噩夢啊……” “哼揭措!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起桑嘶,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤躬充,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后以政,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體津坑,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年眉反,在試婚紗的時候發(fā)現(xiàn)自己被綠了穆役。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡梳杏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叛溢,到底是詐尸還是另有隱情劲适,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布烹植,位于F島的核電站愕贡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏固以。R本人自食惡果不足惜墩虹,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一败晴、第九天 我趴在偏房一處隱蔽的房頂上張望栽渴。 院中可真熱鬧,春花似錦慢味、人聲如沸墅冷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腔彰。三九已至叫编,卻和暖如春霹抛,著一層夾襖步出監(jiān)牢的瞬間杯拐,已是汗流浹背世蔗。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工朗兵, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芙沥。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓浊吏,卻偏偏與公主長得像救氯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子着憨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容