<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          盤點(diǎn)最重要的 7 個 Python 庫!

          共 4145字,需瀏覽 9分鐘

           ·

          2021-10-25 17:07

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

          作者:韋斯·麥金尼(Wes McKinney)
          譯者:徐敬一
          來源:大數(shù)據(jù)DT(ID:hzdashuju)

          01 NumPy

          http://numpy.org

          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

          http://pandas.pydata.org

          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,它是用于實(shí)現(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將是重要主題。

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

          • 帶有標(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ā)能力的語言中實(shí)現(xiàn)。Python就是一個很好的備選項(xiàng),但是那時候并沒有這類數(shù)據(jù)結(jié)構(gòu)的整合集,也沒有能提供相關(guān)功能的工具。結(jié)果就是pandas最初被開發(fā)出來用于解決金融和商業(yè)分析問題,pandas尤其擅長深度時間序列和處理商業(yè)進(jìn)程中產(chǎn)生的時間索引數(shù)據(jù)。

          使用R語言進(jìn)行統(tǒng)計計算的用戶對DataFrame的名稱會非常熟悉,因?yàn)檫@個對象是根據(jù)相似的R data.frame對象進(jìn)行命名的。與Python不同的是,數(shù)據(jù)框在R語言中是標(biāo)準(zhǔn)庫中的內(nèi)容。因此,pandas中的很多特征通常與R核心的實(shí)現(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)可視化工具是一個安全的選擇。

          關(guān)于matplotlib更詳細(xì)講解,請戳:純干貨:手把手教你用Python做數(shù)據(jù)可視化(附代碼)

          04 IPython與Jupyter

          http://ipython.org

          http://jupyter.org

          IPython項(xiàng)目開始于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ù)分析編碼工作包含大量的探索、試驗(yàn)、試錯和遍歷,IPython可以使你更快速地完成工作。

          2014年,F(xiàn)ernando和IPython團(tuán)隊發(fā)布了Jupyter項(xiàng)目。Jupyter項(xiàng)目旨在設(shè)計一個適用于更多語言的交互式計算工具。IPython web notebook 則成為Jupyter notebook,可以支持超過40種編程語言。IPython系統(tǒng)目前可以作為一個內(nèi)核(一種編程語言模式)用于在 Jupyter 中使用Python。

          IPython自身已成為 Jupyter開源項(xiàng)目中的一個組件,后者提供交互性、探索性的高效環(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實(shí)現(xiàn)了內(nèi)核,允許你在Jupyter中使用多種語言而不僅僅是Python。

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

          05 SciPy

          http://scipy.org

          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語言下實(shí)現(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

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

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

          • 回歸: Lasso、嶺回歸等

          • 聚類: k-means、譜聚類等

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

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

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

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

          07 statsmodels

          http://statsmodels.org

          statsmodels是一個統(tǒng)計分析包。它源自斯坦福大學(xué)統(tǒng)計學(xué)教授Jonathan Taylor 利用R語言實(shí)現(xiàn)的各類分析模型。Skipper Seabold 和 Josef Perktold早在2010年便創(chuàng)建了新的statsmodels項(xiàng)目。自那之后該項(xiàng)目迅速成長,擁有大量活躍用戶和貢獻(xiàn)者者。

          Nathaniel Smith 開發(fā)了Patsy項(xiàng)目,為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ā)布。

          推薦閱讀

          看了這個總結(jié),其實(shí) Matplotlib 可視化,也沒那么難!

          40000字 Matplotlib 實(shí)操干貨,真的全!

          這份 Matplotlib 使用小抄,要多全有多全!

          25000字玩轉(zhuǎn) Pandas, 這一篇給力了!

          這幾個用 Pyecharts 做出來的交互圖表,領(lǐng)導(dǎo)說叼爆了!

          瀏覽 47
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码精品视频在线观看 | 日韩99| 色无五月 | 国产精品卡一卡二在线 | 久久黄色录像 |