網(wǎng)站性能檢測(cè)評(píng)分
注:本網(wǎng)站頁(yè)面html檢測(cè)工具掃描網(wǎng)站中存在的基本問(wèn)題,僅供參考。
更新python庫(kù)
2017年最流行的15個(gè)數(shù)據(jù)科學(xué)Python庫(kù) 營(yíng)銷視頻課程
選自Medium
作者:Igor Bobriakov
機(jī)器之心編譯
參與:朱朝陽(yáng)、吳攀
Python 近幾年在數(shù)據(jù)科學(xué)行業(yè)獲得了人們的極大青睞,各種資源也層出不窮。數(shù)據(jù)科學(xué)解決方案公司 ActiveWizards 近日根據(jù)他們自己的應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn),總結(jié)了數(shù)據(jù)科學(xué)家和工程師將在 2017 年最常使用的 Python 庫(kù)。
核心庫(kù)
1)NumPy
地址:http://numpy.org
當(dāng)使用 Python 開(kāi)始處理科學(xué)任務(wù)時(shí),不可避免地需要求助 Python 的 SciPy Stack,它是專門(mén)為 Python 中的科學(xué)計(jì)算而設(shè)計(jì)的軟件的集合(不要與 SciPy 混淆,它只是這個(gè) stack 的一部分,以及圍繞這個(gè) stack 的社區(qū))。這個(gè) stack 相當(dāng)龐大,其中有十幾個(gè)庫(kù),所以我們想聚焦在核心包上(特別是最重要的)。
NumPy(代表 Numerical Python)是構(gòu)建科學(xué)計(jì)算 stack 的最基礎(chǔ)的包。它為 Python 中的 n 維數(shù)組和矩陣的操作提供了大量有用的功能。該庫(kù)還提供了 NumPy 數(shù)組類型的數(shù)學(xué)運(yùn)算向量化,可以提升性能,從而加快執(zhí)行速度。
2)SciPy
地址:https://scipy.org
SciPy 是一個(gè)工程和科學(xué)軟件庫(kù)。除此以外,你還要了解 SciPy Stack 和 SciPy 庫(kù)之間的區(qū)別。SciPy 包含線性代數(shù)、優(yōu)化、集成和統(tǒng)計(jì)的模塊。SciPy 庫(kù)的主要功能建立在 NumPy 的基礎(chǔ)之上,因此它的數(shù)組大量使用了 NumPy。它通過(guò)其特定的子模塊提供高效的數(shù)值例程操作,比如數(shù)值積分、優(yōu)化和許多其他例程。SciPy 的所有子模塊中的函數(shù)都有詳細(xì)的文檔,這也是一個(gè)優(yōu)勢(shì)。
3)Pandas
地址:http://pandas.pydata.org
Pandas 是一個(gè) Python 包,旨在通過(guò)「標(biāo)記(labeled)」和「關(guān)系(relational)」數(shù)據(jù)進(jìn)行工作,簡(jiǎn)單直觀。Pandas 是 data wrangling 的完美工具。它設(shè)計(jì)用于快速簡(jiǎn)單的數(shù)據(jù)操作、聚合和可視化。庫(kù)中有兩個(gè)主要的數(shù)據(jù)結(jié)構(gòu):
Series:一維
Data Frames:二維
例如,當(dāng)你要從這兩種類型的結(jié)構(gòu)中接收到一個(gè)新的「Dataframe」類型的數(shù)據(jù)時(shí),你將通過(guò)傳遞一個(gè)「Series」來(lái)將一行添加到「Dataframe」中來(lái)接收這樣的 Dataframe:
這里只是一小撮你可以用 Pandas 做的事情:
輕松刪除并添加「Dataframe」中的列將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為「Dataframe」對(duì)象處理丟失數(shù)據(jù),表示為 NaN(Not a Number)功能強(qiáng)大的分組
可視化
4)Matplotlib
地址:https://matplotlib.org
Matplotlib 是另一個(gè) SciPy Stack 核心軟件包和另一個(gè) Python 庫(kù),專為輕松生成簡(jiǎn)單而強(qiáng)大的可視化而量身定制。它是一個(gè)頂尖的軟件,使得 Python(在 NumPy、SciPy 和 Pandas 的幫助下)成為 MatLab 或 Mathematica 等科學(xué)工具的顯著競(jìng)爭(zhēng)對(duì)手。然而,這個(gè)庫(kù)比較底層,這意味著你需要編寫(xiě)更多的代碼才能達(dá)到高級(jí)的可視化效果,通常會(huì)比使用更高級(jí)工具付出更多努力,但總的來(lái)說(shuō)值得一試?;ㄒ稽c(diǎn)力氣,你就可以做到任何可視化:
線圖散點(diǎn)圖條形圖和直方圖餅狀圖莖圖輪廓圖場(chǎng)圖頻譜圖
還有使用 Matplotlib 創(chuàng)建標(biāo)簽、網(wǎng)格、圖例和許多其他格式化實(shí)體的功能?;旧?,一切都是可定制的。
該庫(kù)支持不同的平臺(tái),并可使用不同的 GUI 工具套件來(lái)描述所得到的可視化。許多不同的 IDE(如 IPython)都支持 Matplotlib 的功能。
還有一些額外的庫(kù)可以使可視化變得更加容易。
5)Seaborn
地址:https://seaborn.pydata.org
Seaborn 主要關(guān)注統(tǒng)計(jì)模型的可視化;這種可視化包括熱度圖(heat map),可以總結(jié)數(shù)據(jù)但也描繪總體分布。Seaborn 基于 Matplotlib,并高度依賴于它。
6)Bokeh
地址:http://bokeh.pydata.org
Bokeh 也是一個(gè)很好的可視化庫(kù),其目的是交互式可視化。與之前的庫(kù)相反,這個(gè)庫(kù)獨(dú)立于 Matplotlib。正如我們已經(jīng)提到的那樣,Bokeh 的重點(diǎn)是交互性,它通過(guò)現(xiàn)代瀏覽器以數(shù)據(jù)驅(qū)動(dòng)文檔(d3.js)的風(fēng)格呈現(xiàn)。
7)Plotly
地址:https://plot.ly
最后談?wù)?Plotly。它是一個(gè)基于 Web 的工具箱,用于構(gòu)建可視化,將 API 呈現(xiàn)給某些編程語(yǔ)言(其中包括 Python)。在 plot.ly 網(wǎng)站上有一些強(qiáng)大的、開(kāi)箱即用的圖形。為了使用 Plotly,你需要設(shè)置你的 API 密鑰。圖形處理會(huì)放在服務(wù)器端,并在互聯(lián)網(wǎng)上發(fā)布,但也有一種方法可以避免這么做。
機(jī)器學(xué)習(xí)
8)SciKit-Learn
地址:http://scikit-learn.org
Scikits 是 SciPy Stack 的附加軟件包,專為特定功能(如圖像處理和輔助機(jī)器學(xué)習(xí))而設(shè)計(jì)。在后者方面,其中最突出的一個(gè)是 scikit-learn。該軟件包構(gòu)建于 SciPy 之上,并大量使用其數(shù)學(xué)操作。
scikit-learn 有一個(gè)簡(jiǎn)潔和一致的接口,可利用常見(jiàn)的機(jī)器學(xué)習(xí)算法,讓我們可以簡(jiǎn)單地在生產(chǎn)中應(yīng)用機(jī)器學(xué)習(xí)。該庫(kù)結(jié)合了質(zhì)量很好的代碼和良好的文檔,易于使用且有著非常高的性能,是使用 Python 進(jìn)行機(jī)器學(xué)習(xí)的實(shí)際上的行業(yè)標(biāo)準(zhǔn)。
深度學(xué)習(xí):Keras / TensorFlow / Theano
在深度學(xué)習(xí)方面,Python 中最突出和最方便的庫(kù)之一是 Keras,它可以在 TensorFlow 或者 Theano 之上運(yùn)行。讓我們來(lái)看一下它們的一些細(xì)節(jié)。
9)Theano
地址:https://github/Theano
首先,讓我們談?wù)?Theano。Theano 是一個(gè) Python 包,它定義了與 NumPy 類似的多維數(shù)組,以及數(shù)學(xué)運(yùn)算和表達(dá)式。該庫(kù)是經(jīng)過(guò)編譯的,使其在所有架構(gòu)上能夠高效運(yùn)行。這個(gè)庫(kù)最初由蒙特利爾大學(xué)機(jī)器學(xué)習(xí)組開(kāi)發(fā),主要是為了滿足機(jī)器學(xué)習(xí)的需求。
要注意的是,Theano 與 NumPy 在底層的操作上緊密集成。該庫(kù)還優(yōu)化了 GPU 和 CPU 的使用,使數(shù)據(jù)密集型計(jì)算的性能更快。
效率和穩(wěn)定性調(diào)整允許更精確的結(jié)果,即使是非常小的值也可以,例如,即使 x 很小,log(1+x) 也能得到很好的結(jié)果。
10)TensorFlow
地址:https://tensorflow.org
TensorFlow 來(lái)自 Google 的開(kāi)發(fā)人員,它是用于數(shù)據(jù)流圖計(jì)算的開(kāi)源庫(kù),專門(mén)為機(jī)器學(xué)習(xí)設(shè)計(jì)。它是為滿足 Google 對(duì)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的高要求而設(shè)計(jì)的,是基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)系統(tǒng) DistBelief 的繼任者。然而,TensorFlow 并不是谷歌的科學(xué)專用的——它也足以支持許多真實(shí)世界的應(yīng)用。
TensorFlow 的關(guān)鍵特征是其多層節(jié)點(diǎn)系統(tǒng),可以在大型數(shù)據(jù)集上快速訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)。這為 Google 的語(yǔ)音識(shí)別和圖像識(shí)別提供了支持。
11)Keras
地址:https://keras.io
最后,我們來(lái)看看 Keras。它是一個(gè)使用高層接口構(gòu)建神經(jīng)網(wǎng)絡(luò)的開(kāi)源庫(kù),它是用 Python 編寫(xiě)的。它簡(jiǎn)單易懂,具有高級(jí)可擴(kuò)展性。它使用 Theano 或 TensorFlow 作為后端,但 Microsoft 現(xiàn)在已將 CNTK(Microsoft 的認(rèn)知工具包)集成為新的后端。
其簡(jiǎn)約的設(shè)計(jì)旨在通過(guò)建立緊湊型系統(tǒng)進(jìn)行快速和容易的實(shí)驗(yàn)。
Keras 極其容易上手,而且可以進(jìn)行快速的原型設(shè)計(jì)。它完全使用 Python 編寫(xiě)的,所以本質(zhì)上很高層。它是高度模塊化和可擴(kuò)展的。盡管它簡(jiǎn)單易用且面向高層,但 Keras 也非常深度和強(qiáng)大,足以用于嚴(yán)肅的建模。
Keras 的一般思想是基于神經(jīng)網(wǎng)絡(luò)的層,然后圍繞層構(gòu)建一切。數(shù)據(jù)以張量的形式進(jìn)行準(zhǔn)備,第一層負(fù)責(zé)輸入張量,最后一層用于輸出。模型構(gòu)建于兩者之間。
自然語(yǔ)言處理
12)NLTK
地址:http://nltk.org
這套庫(kù)的名稱是 Natural Language Toolkit(自然語(yǔ)言工具包),顧名思義,它可用于符號(hào)和統(tǒng)計(jì)自然語(yǔ)言處理的常見(jiàn)任務(wù)。NLTK 旨在促進(jìn) NLP 及相關(guān)領(lǐng)域(語(yǔ)言學(xué)、認(rèn)知科學(xué)和人工智能等)的教學(xué)和研究,目前正被重點(diǎn)關(guān)注。
NLTK 允許許多操作,例如文本標(biāo)記、分類和 tokenizing、命名實(shí)體識(shí)別、建立語(yǔ)語(yǔ)料庫(kù)樹(shù)(揭示句子間和句子內(nèi)的依存性)、詞干提取、語(yǔ)義推理。所有的構(gòu)建塊都可以為不同的任務(wù)構(gòu)建復(fù)雜的研究系統(tǒng),例如情緒分析、自動(dòng)摘要。
13)Gensim
地址:http://radimrehurek/gensim
這是一個(gè)用于 Python 的開(kāi)源庫(kù),實(shí)現(xiàn)了用于向量空間建模和主題建模的工具。這個(gè)庫(kù)為大文本進(jìn)行了有效的設(shè)計(jì),而不僅僅可以處理內(nèi)存中內(nèi)容。其通過(guò)廣泛使用 NumPy 數(shù)據(jù)結(jié)構(gòu)和 SciPy 操作而實(shí)現(xiàn)了效率。它既高效又易于使用。
Gensim 的目標(biāo)是可以應(yīng)用原始的和非結(jié)構(gòu)化的數(shù)字文本。Gensim 實(shí)現(xiàn)了諸如分層 Dirichlet 進(jìn)程(HDP)、潛在語(yǔ)義分析(LSA)和潛在 Dirichlet 分配(LDA)等算法,還有 tf-idf、隨機(jī)投影、word2vec 和 document2vec,以便于檢查一組文檔(通常稱為語(yǔ)料庫(kù))中文本的重復(fù)模式。所有這些算法是無(wú)監(jiān)督的——不需要任何參數(shù),唯一的輸入是語(yǔ)料庫(kù)。
數(shù)據(jù)挖掘與統(tǒng)計(jì)
14)Scrapy
地址:https://scrapy.org
Scrapy 是用于從網(wǎng)絡(luò)檢索結(jié)構(gòu)化數(shù)據(jù)(如聯(lián)系人信息或 URL)的爬蟲(chóng)程序(也稱為 spider bots)的庫(kù)。它是開(kāi)源的,用 Python 編寫(xiě)。它最初是為 scraping 設(shè)計(jì)的,正如其名字所示的那樣,但它現(xiàn)在已經(jīng)發(fā)展成了一個(gè)完整的框架,可以從 API 收集數(shù)據(jù),也可以用作通用的爬蟲(chóng)。
該庫(kù)在接口設(shè)計(jì)上遵循著名的 Don』t Repeat Yourself 原則——提醒用戶編寫(xiě)通用的可復(fù)用的代碼,因此可以用來(lái)開(kāi)發(fā)和擴(kuò)展大型爬蟲(chóng)。
Scrapy 的架構(gòu)圍繞 Spider 類構(gòu)建,該類包含了一套爬蟲(chóng)所遵循的指令。
15)Statsmodels
地址:http://statsmodels.org
statsmodels 是一個(gè)用于 Python 的庫(kù),正如你可能從名稱中猜出的那樣,其讓用戶能夠通過(guò)使用各種統(tǒng)計(jì)模型估計(jì)方法以及執(zhí)行統(tǒng)計(jì)斷言和分析來(lái)進(jìn)行數(shù)據(jù)探索。
許多有用的特征是描述性的,并可通過(guò)使用線性回歸模型、廣義線性模型、離散選擇模型、穩(wěn)健的線性模型、時(shí)序分析模型、各種估計(jì)器進(jìn)行統(tǒng)計(jì)。
該庫(kù)還提供了廣泛的繪圖函數(shù),專門(mén)用于統(tǒng)計(jì)分析和調(diào)整使用大數(shù)據(jù)統(tǒng)計(jì)數(shù)據(jù)的良好性能。
結(jié)論
這個(gè)列表中的庫(kù)被很多數(shù)據(jù)科學(xué)家和工程師認(rèn)為是最頂級(jí)的,了解和熟悉它們是很有價(jià)值的。這里有這些庫(kù)在 GitHub 上活動(dòng)的詳細(xì)統(tǒng)計(jì):
當(dāng)然,這并不是一份完全詳盡的列表,還有其它很多值得關(guān)注的庫(kù)、工具包和框架。比如說(shuō)用于特定任務(wù)的 SciKit 包,其中包括用于圖像的 SciKit-Image。如果你也有好想法,不妨與我們分享。
Python資源大全,讓你相見(jiàn)恨晚的Python庫(kù)! 營(yíng)銷視頻課程
環(huán)境管理
管理 Python 版本和環(huán)境的工具
p – 非常簡(jiǎn)單的交互式 python 版本管理工具。pyenv – 簡(jiǎn)單的 Python 版本管理工具。Vex – 可以在虛擬環(huán)境中執(zhí)行命令。virtualenv – 創(chuàng)建獨(dú)立 Python 環(huán)境的工具。virtualenvwrapper– virtualenv 的一組擴(kuò)展。
包管理
管理包和依賴的工具。
pip – Python 包和依賴關(guān)系管理工具。pip-tools – 保證 Python 包依賴關(guān)系更新的一組工具。conda – 跨平臺(tái),Python 二進(jìn)制包管理工具。Curdling – 管理 Python 包的命令行工具。wheel – Python 分發(fā)的新標(biāo)準(zhǔn),意在取代 eggs。
包倉(cāng)庫(kù)
本地 PyPI 倉(cāng)庫(kù)服務(wù)和代理。
warehouse – 下一代 PyPI。Warehouse bandersnatch – PyPA 提供的 PyPI 鏡像工具。devpi – PyPI 服務(wù)和打包/測(cè)試/分發(fā)工具。localshop – 本地 PyPI 服務(wù)(自定義包并且自動(dòng)對(duì) PyPI 鏡像)。
分發(fā)
打包為可執(zhí)行文件以便分發(fā)。
PyInstaller – 將 Python 程序轉(zhuǎn)換成獨(dú)立的執(zhí)行文件(跨平臺(tái))。dh-virtualenv – 構(gòu)建并將 virtualenv 虛擬環(huán)境作為一個(gè) Debian 包來(lái)發(fā)布。Nuitka – 將腳本、模塊、包編譯成可執(zhí)行文件或擴(kuò)展模塊。py2app – 將 Python 腳本變?yōu)楠?dú)立軟件包(Mac OS X)。py2exe – 將 Python 腳本變?yōu)楠?dú)立軟件包(Windows)。pynsist – 一個(gè)用來(lái)創(chuàng)建 Windows 安裝程序的工具,可以在安裝程序中打包 Python本身。
構(gòu)建工具
將源碼編譯成軟件。
buildout – 一個(gè)構(gòu)建系統(tǒng),從多個(gè)組件來(lái)創(chuàng)建,組裝和部署應(yīng)用。BitBake – 針對(duì)嵌入式 Linux 的類似 make 的構(gòu)建工具。fabricate – 對(duì)任何語(yǔ)言自動(dòng)找到依賴關(guān)系的構(gòu)建工具。PlatformIO – 多平臺(tái)命令行構(gòu)建工具。PyBuilder – 純 Python 實(shí)現(xiàn)的持續(xù)化構(gòu)建工具。SCons – 軟件構(gòu)建工具。
交互式解析器
交互式 Python 解析器。
IPython – 功能豐富的工具,非常有效的使用交互式 Python。bpython– 界面豐富的 Python 解析器。ptpython – 高級(jí)交互式Python解析器, 構(gòu)建于python-prompt-toolkit 之上。
文件
文件管理和 MIME(多用途的網(wǎng)際郵件擴(kuò)充協(xié)議)類型檢測(cè)。
imghdr – (Python 標(biāo)準(zhǔn)庫(kù))檢測(cè)圖片類型。mimetypes – (Python 標(biāo)準(zhǔn)庫(kù))將文件名映射為 MIME 類型。path.py – 對(duì) os.path 進(jìn)行封裝的模塊。pathlib – (Python3.4+ 標(biāo)準(zhǔn)庫(kù))跨平臺(tái)的、面向?qū)ο蟮穆窂讲僮鲙?kù)。python-magic– 文件類型檢測(cè)的第三方庫(kù) libmagic 的 Python 接口。Unipath– 用面向?qū)ο蟮姆绞讲僮魑募湍夸泈atchdog – 管理文件系統(tǒng)事件的 API 和 shell 工具
日期和時(shí)間
操作日期和時(shí)間的類庫(kù)。
arrow– 更好的 Python 日期時(shí)間操作類庫(kù)。Chronyk – Python 3 的類庫(kù),用于解析手寫(xiě)格式的時(shí)間和日期。dateutil – Python datetime 模塊的擴(kuò)展。delorean– 解決 Python 中有關(guān)日期處理的棘手問(wèn)題的庫(kù)。moment – 一個(gè)用來(lái)處理時(shí)間和日期的Python庫(kù)。靈感來(lái)自于Moment.js。PyTime – 一個(gè)簡(jiǎn)單易用的Python模塊,用于通過(guò)字符串來(lái)操作日期/時(shí)間。pytz – 現(xiàn)代以及歷史版本的世界時(shí)區(qū)定義。將時(shí)區(qū)數(shù)據(jù)庫(kù)引入Python。when.py – 提供用戶友好的函數(shù)來(lái)幫助用戶進(jìn)行常用的日期和時(shí)間操作。
文本處理
用于解析和操作文本的庫(kù)。
通用chardet – 字符編碼檢測(cè)器,兼容 Python2 和 Python3。difflib – (Python 標(biāo)準(zhǔn)庫(kù))幫助我們進(jìn)行差異化比較。ftfy – 讓Unicode文本更完整更連貫。fuzzywuzzy – 模糊字符串匹配。Levenshtein – 快速計(jì)算編輯距離以及字符串的相似度。pangu.py – 在中日韓語(yǔ)字符和數(shù)字字母之間添加空格。pyfiglet -figlet 的 Python實(shí)現(xiàn)。shortuuid – 一個(gè)生成器庫(kù),用以生成簡(jiǎn)潔的,明白的,URL 安全的 UUID。unidecode – Unicode 文本的 ASCII 轉(zhuǎn)換形式 。uniout – 打印可讀的字符,而不是轉(zhuǎn)義的字符串。xpinyin – 一個(gè)用于把漢字轉(zhuǎn)換為拼音的庫(kù)。Slug化awesome-slugify – 一個(gè) Python slug 化庫(kù),可以保持 Unicode。python-slugify – Python slug 化庫(kù),可以把 unicode 轉(zhuǎn)化為 ASCII。unicode-slugify – 一個(gè) slug 工具,可以生成 unicode slugs ,需要依賴 Django 。解析器phonenumbers – 解析,格式化,儲(chǔ)存,驗(yàn)證電話號(hào)碼。PLY – lex 和 yacc 解析工具的 Python 實(shí)現(xiàn)。Pygments – 通用語(yǔ)法高亮工具。pyparsing – 生成通用解析器的框架。python-nameparser – 把一個(gè)人名分解為幾個(gè)獨(dú)立的部分。python-user-agents – 瀏覽器 user agent 解析器。sqlparse – 一個(gè)無(wú)驗(yàn)證的 SQL 解析器。
特殊文本格式處理
一些用來(lái)解析和操作特殊文本格式的庫(kù)。
通用tablib – 一個(gè)用來(lái)處理中表格數(shù)據(jù)的模塊。OfficeMarmir – 把輸入的Python 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為電子表單。openpyxl – 一個(gè)用來(lái)讀寫(xiě) Excel 2010 xlsx/xlsm/xltx/xltm 文件的庫(kù)。python-docx – 讀取,查詢以及修改 Microsoft Word 2007/2008 docx 文件。unoconv – 在 LibreOffice/OpenOffice 支持的任意文件格式之間進(jìn)行轉(zhuǎn)換。XlsxWriter – 一個(gè)用于創(chuàng)建 Excel .xlsx 文件的 Python 模塊。xlwings – 一個(gè)使得在 Excel 中方便調(diào)用 Python 的庫(kù)(反之亦然),基于 BSD 協(xié)議。xlwt / xlrd – 讀寫(xiě) Excel 文件的數(shù)據(jù)和格式信息。relatorio – 模板化OpenDocument 文件。PDFPDFMiner – 一個(gè)用于從PDF文檔中抽取信息的工具。PyPDF2 – 一個(gè)可以分割,合并和轉(zhuǎn)換 PDF 頁(yè)面的庫(kù)。ReportLab – 快速創(chuàng)建富文本 PDF 文檔。MarkdownMistune – 快速并且功能齊全的純 Python 實(shí)現(xiàn)的 Markdown 解析器。Python-Markdown – John Gruber’s Markdown 的 Python 版實(shí)現(xiàn)。YAMLPyYAML – Python 版本的 YAML 解析器。CSVcsvkit – 用于轉(zhuǎn)換和操作 CSV 的工具。Archiveunp – 一個(gè)用來(lái)方便解包歸檔文件的命令行工具。
自然語(yǔ)言處理
用來(lái)處理人類語(yǔ)言的庫(kù)。
NLTK – 一個(gè)先進(jìn)的平臺(tái),用以構(gòu)建處理人類語(yǔ)言數(shù)據(jù)的 Python 程序。jieba – 中文分詞工具。langid.py – 獨(dú)立的語(yǔ)言識(shí)別系統(tǒng)。Pattern – Python 網(wǎng)絡(luò)信息挖掘模塊。SnowNLP – 一個(gè)用來(lái)處理中文文本的庫(kù)。TextBlob – 為進(jìn)行普通自然語(yǔ)言處理任務(wù)提供一致的 API。TextGrocery – 一簡(jiǎn)單高效的短文本分類工具,基于 LibLinear 和 Jieba。
文檔
用以生成項(xiàng)目文檔的庫(kù)。
Sphinx – Python 文檔生成器。awesome-sphinxdocMkDocs – 對(duì) Markdown 友好的文檔生成器。pdoc – 一個(gè)可以替換Epydoc 的庫(kù),可以自動(dòng)生成 Python 庫(kù)的 API 文檔。Pycco – 文學(xué)編程(literate-programming)風(fēng)格的文檔生成器。
配置
用來(lái)保存和解析配置的庫(kù)。
config – logging 模塊作者寫(xiě)的分級(jí)配置模塊。ConfigObj – INI 文件解析器,帶驗(yàn)證功能。ConfigParser – (Python 標(biāo)準(zhǔn)庫(kù)) INI 文件解析器。profig – 通過(guò)多種格式進(jìn)行配置,具有數(shù)值轉(zhuǎn)換功能。python-decouple – 將設(shè)置和代碼完全隔離。
命令行工具
用于創(chuàng)建命令行程序的庫(kù)。
命令行程序開(kāi)發(fā)cement – Python 的命令行程序框架。click – 一個(gè)通過(guò)組合的方式來(lái)創(chuàng)建精美命令行界面的包。cliff – 一個(gè)用于創(chuàng)建命令行程序的框架,可以創(chuàng)建具有多層命令的命令行程序。clint – Python 命令行程序工具。colorama – 跨平臺(tái)彩色終端文本。docopt – Python 風(fēng)格的命令行參數(shù)解析器。Gooey – 一條命令,將命令行程序變成一個(gè) GUI 程序。python-prompt-toolkit – 一個(gè)用于構(gòu)建強(qiáng)大的交互式命令行程序的庫(kù)。生產(chǎn)力工具aws-cli – Amazon Web Services 的通用命令行界面。bashplotlib – 在終端中進(jìn)行基本繪圖。caniusepython3 – 判斷是哪個(gè)項(xiàng)目妨礙你你移植到 Python 3。cookiecutter – 從 cookiecutters(項(xiàng)目模板)創(chuàng)建項(xiàng)目的一個(gè)命令行工具。doitlive – 一個(gè)用來(lái)在終端中進(jìn)行現(xiàn)場(chǎng)演示的工具。howdoi – 通過(guò)命令行獲取即時(shí)的編程問(wèn)題解答。httpie – 一個(gè)命令行HTTP 客戶端,cURL 的替代品,易用性更好。PathPicker – 從bash輸出中選出文件。percol – 向UNIX shell 傳統(tǒng)管道概念中加入交互式選擇功能。SAWS – 一個(gè)加強(qiáng)版的 AWS 命令行。thefuck – 修正你之前的命令行指令。mycli – 一個(gè) MySQL 命令行客戶端,具有自動(dòng)補(bǔ)全和語(yǔ)法高亮功能。pgcli – Postgres 命令行工具,具有自動(dòng)補(bǔ)全和語(yǔ)法高亮功能。
下載器
用來(lái)進(jìn)行下載的庫(kù).
s3cmd – 一個(gè)用來(lái)管理Amazon S3 和 CloudFront 的命令行工具。s4cmd – 超級(jí) S3 命令行工具,性能更加強(qiáng)勁。you-get – 一個(gè) YouTube/Youku/Niconico 視頻下載器,使用 Python3 編寫(xiě)。youtube-dl – 一個(gè)小巧的命令行程序,用來(lái)下載 YouTube 視頻。
圖像處理
用來(lái)操作圖像的庫(kù).
pillow – Pillow 是一個(gè)更加易用版的 PIL。hmap – 圖像直方圖映射。imgSeek – 一個(gè)使用視覺(jué)相似性搜索一組圖片集合的項(xiàng)目。nude.py – 裸體檢測(cè)。pyBarcode – 不借助 PIL 庫(kù)在 Python 程序中生成條形碼。pygram – 類似 Instagram 的圖像濾鏡。python-qrcode – 一個(gè)純 Python 實(shí)現(xiàn)的二維碼生成器。Quads – 基于四叉樹(shù)的計(jì)算機(jī)藝術(shù)。scikit-image – 一個(gè)用于(科學(xué))圖像處理的 Python 庫(kù)。thumbor – 一個(gè)小型圖像服務(wù),具有剪裁,尺寸重設(shè)和翻轉(zhuǎn)功能。wand – MagickWand的Python 綁定。MagickWand 是 ImageMagick的 C API 。
OCR
光學(xué)字符識(shí)別庫(kù)。
pyocr – Tesseract 和 Cuneiform 的一個(gè)封裝(wrapper)。pytesseract – Google Tesseract OCR 的另一個(gè)封裝(wrapper)。python-tesseract – Google Tesseract OCR 的一個(gè)包裝類。
音頻
用來(lái)操作音頻的庫(kù)
audiolazy -Python 的數(shù)字信號(hào)處理包。audioread – 交叉庫(kù) (GStreamer + Core Audio + MAD + FFmpeg) 音頻解碼。beets – 一個(gè)音樂(lè)庫(kù)管理工具及 MusicBrainz 標(biāo)簽添加工具dejavu – 音頻指紋提取和識(shí)別django-elastic-transcoder – Django + Amazon Elastic Transcoder。eyeD3 – 一個(gè)用來(lái)操作音頻文件的工具,具體來(lái)講就是包含 ID3 元信息的 MP3 文件。id3reader – 一個(gè)用來(lái)讀取 MP3 元數(shù)據(jù)的 Python 模塊。m3u8 – 一個(gè)用來(lái)解析 m3u8 文件的模塊。mutagen – 一個(gè)用來(lái)處理音頻元數(shù)據(jù)的 Python 模塊。pydub – 通過(guò)簡(jiǎn)單、簡(jiǎn)潔的高層接口來(lái)操作音頻文件。pyechonest – Echo Nest API 的 Python 客戶端talkbox – 一個(gè)用來(lái)處理演講/信號(hào)的 Python 庫(kù)TimeSide – 開(kāi)源 web 音頻處理框架。tinytag – 一個(gè)用來(lái)讀取MP3, OGG, FLAC 以及 Wave 文件音樂(lè)元數(shù)據(jù)的庫(kù)。mingus – 一個(gè)高級(jí)音樂(lè)理論和曲譜包,支持 MIDI 文件和回放功能。
Video
用來(lái)操作視頻和GIF的庫(kù)。
moviepy – 一個(gè)用來(lái)進(jìn)行基于腳本的視頻編輯模塊,適用于多種格式,包括動(dòng)圖 GIFs。scikit-video – SciPy 視頻處理常用程序。
地理位置
地理編碼地址以及用來(lái)處理經(jīng)緯度的庫(kù)。
GeoDjango – 世界級(jí)地理圖形 web 框架。GeoIP – MaxMind GeoIP Legacy 數(shù)據(jù)庫(kù)的 Python API。geojson – GeoJSON 的 Python 綁定及工具。geopy – Python 地址編碼工具箱。pygeoip – 純 Python GeoIP API。django-countries – 一個(gè) Django 應(yīng)用程序,提供用于表格的國(guó)家選擇功能,國(guó)旗圖標(biāo)靜態(tài)文件以及模型中的國(guó)家字段。
HTTP
使用HTTP的庫(kù)。
requests – 人性化的HTTP請(qǐng)求庫(kù)。grequests – requests 庫(kù) + gevent ,用于異步 HTTP 請(qǐng)求.httplib2 – 全面的 HTTP 客戶端庫(kù)。treq – 類似 requests 的Python API 構(gòu)建于 Twisted HTTP 客戶端之上。urllib3 – 一個(gè)具有線程安全連接池,支持文件 post,清晰友好的 HTTP 庫(kù)。
數(shù)據(jù)庫(kù)
Python實(shí)現(xiàn)的數(shù)據(jù)庫(kù)。
pickleDB – 一個(gè)簡(jiǎn)單,輕量級(jí)鍵值儲(chǔ)存數(shù)據(jù)庫(kù)。PipelineDB – 流式 SQL 數(shù)據(jù)庫(kù)。TinyDB – 一個(gè)微型的,面向文檔型數(shù)據(jù)庫(kù)。ZODB – 一個(gè) Python 原生對(duì)象數(shù)據(jù)庫(kù)。一個(gè)鍵值和對(duì)象圖數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)驅(qū)動(dòng)
用來(lái)連接和操作數(shù)據(jù)庫(kù)的庫(kù)。
MySQL – awesome-mysql系列mysql-python – Python 的 MySQL 數(shù)據(jù)庫(kù)連接器。mysqlclient – mysql-python 分支,支持 Python 3。oursql – 一個(gè)更好的 MySQL 連接器,支持原生預(yù)編譯指令和 BLOBs.PyMySQL – 純 Python MySQL 驅(qū)動(dòng),兼容 mysql-python。PostgreSQLpsycopg2 – Python 中最流行的 PostgreSQL 適配器。queries – psycopg2 庫(kù)的封裝,用來(lái)和 PostgreSQL 進(jìn)行交互。txpostgres – 基于 Twisted 的異步 PostgreSQL 驅(qū)動(dòng)。其他關(guān)系型數(shù)據(jù)庫(kù)apsw – 另一個(gè) Python SQLite封裝。dataset – 在數(shù)據(jù)庫(kù)中存儲(chǔ)Python字典 – 可以協(xié)同SQLite,MySQL,和 PostgreSQL工作。pymssql– 一個(gè)簡(jiǎn)單的Microsoft SQL Server數(shù)據(jù)庫(kù)接口。NoSQL 數(shù)據(jù)庫(kù)cassandra-python-driver – Cassandra 的 Python 驅(qū)動(dòng)。HappyBase – 一個(gè)為 Apache HBase 設(shè)計(jì)的,對(duì)開(kāi)發(fā)者友好的庫(kù)。Plyvel – 一個(gè)快速且功能豐富的 LevelDB 的 Python 接口。py2neo – Neo4j restful 接口的Python 封裝客戶端。pycassa – Cassandra 的 Python Thrift 驅(qū)動(dòng)。PyMongo – MongoDB 的官方 Python 客戶端。redis-py – Redis 的 Python 客戶端。telephus – 基于 Twisted 的 Cassandra 客戶端。txRedis – 基于 Twisted 的 Redis 客戶端。
ORM
實(shí)現(xiàn)對(duì)象關(guān)系映射或數(shù)據(jù)映射技術(shù)的庫(kù)。
關(guān)系型數(shù)據(jù)庫(kù)awesome-sqlalchemy系列Django Models – Django 的一部分。SQLAlchemy – Python SQL 工具以及對(duì)象關(guān)系映射工具。Peewee – 一個(gè)小巧,富有表達(dá)力的 ORM。PonyORM – 提供面向生成器的 SQL 接口的 ORM。python-sql – 編寫(xiě) Python 風(fēng)格的 SQL 查詢。NoSQL 數(shù)據(jù)庫(kù)django-mongodb-engine – Django MongoDB 后端。PynamoDB – Amazon DynamoDB 的一個(gè) Python 風(fēng)格接口。flywheel – Amazon DynamoDB 的對(duì)象映射工具。MongoEngine – 一個(gè)Python 對(duì)象文檔映射工具,用于 MongoDB。hot-redis – 為 Redis 提供 Python 豐富的數(shù)據(jù)類型。redisco – 一個(gè) Python 庫(kù),提供可以持續(xù)存在在 Redis 中的簡(jiǎn)單模型和容器。其他butterdb – Google Drive 電子表格的 Python ORM。
Web 框架
全棧 web 框架。
Django – Python 界最流行的 web 框架。awesome-django系列Flask – 一個(gè) Python 微型框架。awesome-flask系列Pyramid – 一個(gè)小巧,快速,接地氣的開(kāi)源Python web 框架。awesome-pyramid系列Bottle – 一個(gè)快速小巧,輕量級(jí)的 WSGI 微型 web 框架。CherryPy – 一個(gè)極簡(jiǎn)的 Python web 框架,?...
Python庫(kù)Windows下安裝方法和常用庫(kù)安裝 行業(yè)視頻課程
Python庫(kù)Windows下安裝方法和常用庫(kù)安裝(pandas/numpy/matplotlib/scipy)
作者:優(yōu)選財(cái)經(jīng)網(wǎng)( youxuancaijing )
Python 具有腳本語(yǔ)言中最豐富和強(qiáng)大的類庫(kù),足以支持絕大多數(shù)日常應(yīng)用。
Windows下python庫(kù)的3種常用安裝方法
1.pip安裝(需要pip)2.通過(guò)下載whl文件安裝(需要pip)3.在pythn官網(wǎng)下載安裝包安裝(不需要pip)
方法一:pip安裝。
這是最常用的python安裝方法,新版的python一般自帶pip.exe程序,在CMD中輸入pip 可以查看相關(guān)參數(shù)
通常我們輸入指令 pip install xxx來(lái)讓python自動(dòng)安裝。比如:
pip install pandas
如上圖所示,他會(huì)自動(dòng)下載用到的相關(guān)包。但是,在安裝一些庫(kù)的時(shí)候,往往會(huì)報(bào)出各種各樣的錯(cuò)誤。
方法二:通過(guò)下載whl文件安裝
1.下載相應(yīng)庫(kù)的whl文件,網(wǎng)址Python Extension Packages。注意要下載相應(yīng)版本的,還有32還是64位系統(tǒng)。
2.cmd上輸入pip install .whl文件名即可。 要完整的文件
方法三:官網(wǎng)下載文件安裝
1)下載
2)解壓
3)在命令提示符窗口中,使用cd進(jìn)入到解壓后的文件的路徑下
4)輸入命令python setup.py install
常用的兩個(gè)下載包和模塊安裝文件的網(wǎng)站:PyPI-the Python Package Index和Python Extension Packages。
最后,我們通過(guò)pip命令,順利安裝我們后面要用的這個(gè)幾個(gè)包,這些包的具體功能和用法,我們后期再做詳細(xì)講解。
pip install numpypip install pandaspip install matplotlibpip install scipy
人生苦短,我用python。
Python大神,requests庫(kù)的作者放大招了 公司視頻課程
只要是學(xué)爬蟲(chóng)的同學(xué),相信無(wú)人不知的,無(wú)人不曉requests庫(kù)!requests這個(gè)庫(kù)號(hào)稱為人類而寫(xiě)的http庫(kù)("Python HTTP Requests for Humans"),非常好用,功能強(qiáng)大!
它的作者就是大名鼎鼎的Kenneth Reitz,這位大神非常牛逼,功力深厚還愛(ài)好攝影,對(duì)美學(xué)有自己的追求,能把這種美學(xué)的意境運(yùn)用到代碼上,非常厲害!
今天去逛他的github,發(fā)現(xiàn)他出了一本Python-guide書(shū),趕緊去圍觀學(xué)習(xí)了一下受益匪淺!本書(shū)是號(hào)稱Python best practices guidebook, written for Humans,目前有一萬(wàn)三千多的點(diǎn)贊量!
這本書(shū)內(nèi)容非常豐富,從win/linux/os的開(kāi)發(fā)環(huán)境的安裝,到開(kāi)發(fā)工具推薦和設(shè)置,到如何寫(xiě)成優(yōu)雅的代碼,再到Python應(yīng)用場(chǎng)景的指南比如(網(wǎng)絡(luò)應(yīng)用,web開(kāi)發(fā),命令行的應(yīng)用,GUI的應(yīng)用),數(shù)據(jù)庫(kù),系統(tǒng)管理,持續(xù)集成和數(shù)據(jù)庫(kù)等等,下面我摘錄了某一章節(jié)里面的部分片段:
Writing Great Python Code
這部分指南關(guān)注編寫(xiě)Python代碼的最佳實(shí)踐。
結(jié)構(gòu)化您的工程倉(cāng)庫(kù)的結(jié)構(gòu)結(jié)構(gòu)是一把鑰匙模塊包面向?qū)ο缶幊萄b飾器上下文管理器動(dòng)態(tài)類型可變和不可變類型提供依賴關(guān)系Runners更多閱讀代碼風(fēng)格一般概念習(xí)語(yǔ)(Idiom)Python之禪PEP 8約定1.模塊
Python模塊是最主要的抽象層之一,并且很可能是最自然的一個(gè),抽象層允許將代碼分為 不同部分,每個(gè)部分包含相關(guān)的數(shù)據(jù)與功能:
可以使用import語(yǔ)句的特殊形式from modu import * 模擬更標(biāo)準(zhǔn)的行為。但 import* 通常 被認(rèn)為是不好的做法,但是使用 from modu import * 的代碼較難閱讀而且依賴獨(dú)立性不足。使用 from modu import func 能精確定位您想導(dǎo)入的方法并將其放到全局命名空間中。比 from modu import * 要好些,因?yàn)樗鞔_地指明往全局命名空間中導(dǎo)入了什么方法。
2.動(dòng)態(tài)類型
Python是動(dòng)態(tài)類型語(yǔ)言,這意味著變量并沒(méi)有固定的類型。實(shí)際上,Python 中的變量和其他語(yǔ)言有很大的不同,特別是靜態(tài)類型語(yǔ)言。
變量并不是計(jì)算機(jī)內(nèi)存中被寫(xiě)入的某個(gè)值,它們只是指向內(nèi)存的 ‘標(biāo)簽’ 或 ‘名稱’ 。
因此可能存在這樣的情況,變量 ‘a(chǎn)’ 先代表值1,然后變成字符串 ‘a(chǎn) string’ , 然后又變?yōu)橹赶蛞粋€(gè)函數(shù):
3.明確的代碼
在存在各種黑魔法的Python中,我們提倡最明確和直接的編碼方式:
4.每行一個(gè)聲明
復(fù)合語(yǔ)句(比如說(shuō)列表推導(dǎo))因其簡(jiǎn)潔和表達(dá)性受到推崇,但在同一行代碼中寫(xiě)兩條獨(dú)立的語(yǔ)句是糟糕的:
5.返回值
當(dāng)一個(gè)函數(shù)變得復(fù)雜,在函數(shù)體中使用多返回值的語(yǔ)句并不少見(jiàn)。然而,為了保持函數(shù)的明確意圖以及一個(gè)可持續(xù)的可讀水平,更建議在函數(shù)體中避免使用返回多個(gè)有意義的值。
盡管如此,當(dāng)一個(gè)函數(shù)在其正常過(guò)程中有多個(gè)主要出口點(diǎn)時(shí),它會(huì)變得難以調(diào)試和返回其 結(jié)果,所以保持單個(gè)出口點(diǎn)可能會(huì)更好。
這也將有助于提取某些代碼路徑,而且多個(gè)出口點(diǎn) 很有可能意味著這里需要重構(gòu)。
上面只是一些書(shū)里的很少的部分,大神的內(nèi)容非常豐富而且全面,非常成體系!值得細(xì)細(xì)推敲和咀嚼,對(duì)提高Python的功勞大有裨益,還等什么,趕緊去圍觀吧.
盡管 Python 官方之前公布相應(yīng)消息,會(huì)在 2020 年停止對(duì) Python 2 的官方支持,但并未落實(shí)到具體日期。
最近 Python 之父 Guido van Rossum 在官方郵件組回復(fù)了對(duì) Python 2.7 何時(shí)終結(jié)(EOL)的咨詢。
Guido van Rossum 在回復(fù)表示:
Let's not play games with semantics. The way I see the situation for 2.7 is that EOL is January 1st, 2020, and there will be no updates, not even source-only security patches, after that date. Support (from the core devs, the PSF, and python.org) stops completely on that date. If you want support for 2.7 beyond that day you will have to pay a commercial vendor. Of course it's open source so people are also welcome to fork it. But the core devs have toiled long enough, and the 2020 EOL date (an extension from the originally annouced 2015 EOL!) was announced with sufficient lead time and fanfare that I don't feel bad about stopping to support it at all.(大意如下):好了,咱們不玩文字語(yǔ)義游戲了。Python 2.7 的 EOL 日期是 2020 年 1 月 1 日,之后不會(huì)有任何更新,源碼的安全補(bǔ)丁也不會(huì)有了。2020 年元旦之后,來(lái)自 Python 核心開(kāi)發(fā)團(tuán)隊(duì)、PSF(Python 軟件基金會(huì))、Python.org 的支持,統(tǒng)統(tǒng)都停掉。如果以后你想要對(duì) 2.7 的支持,你得給商業(yè)供應(yīng)商掏錢(qián)了。當(dāng)然了,因?yàn)?Python 是開(kāi)源的,所以也歡迎大家來(lái) fork。官方核心開(kāi)發(fā)團(tuán)隊(duì)已經(jīng)努力工作夠長(zhǎng)的時(shí)間了,離 2020 年的 EOL 日期還有很長(zhǎng),(之前曾說(shuō)過(guò)在 2015 年就終結(jié)),所以停止支持 Python 2,我完全沒(méi)覺(jué)得有啥糟糕的。
2017 年宣布不再支持 Python 2 的軟件/庫(kù)有:
就在2017年 11 月 16 日,Numpy 庫(kù)官方宣布準(zhǔn)備放棄支持 Python 2。
12 月 2 日,Python Web 開(kāi)發(fā)框架 Django 官網(wǎng)發(fā)文宣布推送 Django 2.0 版。在 Django 2.0 的發(fā)布說(shuō)明中,最大吸引注意的內(nèi)容就是兼容性。
Django 1.11.x 是支持 Python 2.7 的最后版本;Django 2.0 支持 Python 3.4、3.5 和 3.6;Django 2.0 對(duì) Python 3.4 將于 2019 年 3 月結(jié)束支持,因此 Django 2.0 也將是最后一個(gè)支持 Python 3.4 的版本。
Django 2.0 的主要新特性包括:
簡(jiǎn)化 URL 路由語(yǔ)法
以前是這樣寫(xiě):
url(r'^articles/(?P
現(xiàn)在可以這樣:
path('articles/
移動(dòng)友好的 contrib.admin
admin 將自適應(yīng)主流移動(dòng)設(shè)備。優(yōu)雅性在老舊瀏覽器則可能會(huì)有打折咯。
新的 Window expressions
新 Window 表達(dá)式允許在查詢集添加 OVER 從句。可以在表達(dá)式中使用 window 函數(shù)和 aggregate 函數(shù)。
Numpy 是 Python 的一個(gè)科學(xué)計(jì)算的庫(kù),提供了矩陣運(yùn)算的功能,一般與 Scipy、matplotlib 一起使用。
今天 Numpy 的 GitHub 主頁(yè)上發(fā)文稱,Numpy 庫(kù)準(zhǔn)備從 2019 年 1 月 1 日起,放棄支持 Python 2。
「Python開(kāi)發(fā)者」摘編如下:
Python 內(nèi)核團(tuán)隊(duì)將于 2020 年停止支持 Python 2。NumPy 項(xiàng)目從 2010 年同時(shí)支持 Python 2 和 Python 3,我們發(fā)現(xiàn)自己有限資源無(wú)力再支持 Python 2 了。因此,我們也計(jì)劃放棄支持 Python 2。
相應(yīng)時(shí)間表如下:
2018 年 12 月 31 日之前,所有 NumPy 發(fā)布版均同時(shí)支持Python 2 和 Python 3。從 2019 年 1 月 1 日起,NumPy 的新特性只支持 Python 3。NumPy 的最后一個(gè) Python 2 的版本,將被指定為一個(gè)長(zhǎng)期支持版(LTS),意味著我們會(huì)長(zhǎng)期持續(xù)合并 Bug 修復(fù)和制作 Bug 補(bǔ)丁。LTS 版將會(huì)支持到 2019 年 12 月 31 日。
從 2020 年 1 月 1 日起,NumPy 社區(qū)對(duì) Python 2 的支持,就徹底說(shuō)再見(jiàn)了。不過(guò),PyPI 會(huì)繼續(xù)支持 Python 2。如果有商業(yè)廠商希望在 2020 年 1 月 1 日后擴(kuò)大 LTS 的支持,我們?cè)敢庾屗麄兪褂?NumPy 官方 repo 中的 LTS 分支。
如果我的分享對(duì)你有幫助,還請(qǐng)關(guān)注菜鳥(niǎo)學(xué)Python頭條號(hào),與你分享更多有用的知識(shí)。
關(guān)注私信:學(xué)習(xí)資料,獲取更多學(xué)習(xí)教程,與更多人一起學(xué)習(xí)Python!
Python常用庫(kù)大全 推廣視頻課程
環(huán)境管理
管理 Python 版本和環(huán)境的工具
p – 非常簡(jiǎn)單的交互式 python 版本管理工具。 pyenv – 簡(jiǎn)單的 Python 版本管理工具。 Vex – 可以在虛擬環(huán)境中執(zhí)行命令。 virtualenv – 創(chuàng)建獨(dú)立 Python 環(huán)境的工具。 virtualenvwrapper- virtualenv 的一組擴(kuò)展。 包管理
管理包和依賴的工具。
pip – Python 包和依賴關(guān)系管理工具。 pip-tools – 保證 Python 包依賴關(guān)系更新的一組工具。 conda – 跨平臺(tái),Python 二進(jìn)制包管理工具。 Curdling – 管理 Python 包的命令行工具。 wheel – Python 分發(fā)的新標(biāo)準(zhǔn),意在取代 eggs。 包倉(cāng)庫(kù)
本地 PyPI 倉(cāng)庫(kù)服務(wù)和代理。
warehouse – 下一代 PyPI。 Warehousebandersnatch – PyPA 提供的 PyPI 鏡像工具。 devpi – PyPI 服務(wù)和打包/測(cè)試/分發(fā)工具。 localshop – 本地 PyPI 服務(wù)(自定義包并且自動(dòng)對(duì) PyPI 鏡像)。 分發(fā)
打包為可執(zhí)行文件以便分發(fā)。
PyInstaller – 將 Python 程序轉(zhuǎn)換成獨(dú)立的執(zhí)行文件(跨平臺(tái))。 dh-virtualenv – 構(gòu)建并將 virtualenv 虛擬環(huán)境作為一個(gè) Debian 包來(lái)發(fā)布。 Nuitka – 將腳本、模塊、包編譯成可執(zhí)行文件或擴(kuò)展模塊。 py2app – 將 Python 腳本變?yōu)楠?dú)立軟件包(Mac OS X)。 py2exe – 將 Python 腳本變?yōu)楠?dú)立軟件包(Windows)。 pynsist – 一個(gè)用來(lái)創(chuàng)建 Windows 安裝程序的工具,可以在安裝程序中打包 Python本身。 構(gòu)建工具
將源碼編譯成軟件。
buildout – 一個(gè)構(gòu)建系統(tǒng),從多個(gè)組件來(lái)創(chuàng)建,組裝和部署應(yīng)用。 BitBake – 針對(duì)嵌入式 Linux 的類似 make 的構(gòu)建工具。 fabricate – 對(duì)任何語(yǔ)言自動(dòng)找到依賴關(guān)系的構(gòu)建工具。 PlatformIO – 多平臺(tái)命令行構(gòu)建工具。 PyBuilder – 純 Python 實(shí)現(xiàn)的持續(xù)化構(gòu)建工具。 SCons – 軟件構(gòu)建工具。 交互式解析器
交互式 Python 解析器。
IPython – 功能豐富的工具,非常有效的使用交互式 Python。 bpython- 界面豐富的 Python 解析器。 ptpython – 高級(jí)交互式Python解析器, 構(gòu)建于python-prompt-toolkit 之上。 文件
文件管理和 MIME(多用途的網(wǎng)際郵件擴(kuò)充協(xié)議)類型檢測(cè)。
imghdr – (Python 標(biāo)準(zhǔn)庫(kù))檢測(cè)圖片類型。 mimetypes – (Python 標(biāo)準(zhǔn)庫(kù))將文件名映射為 MIME 類型。 path.py – 對(duì) os.path 進(jìn)行封裝的模塊。 pathlib – (Python3.4+ 標(biāo)準(zhǔn)庫(kù))跨平臺(tái)的、面向?qū)ο蟮穆窂讲僮鲙?kù)。 python-magic- 文件類型檢測(cè)的第三方庫(kù) libmagic 的 Python 接口。 Unipath- 用面向?qū)ο蟮姆绞讲僮魑募湍夸?watchdog – 管理文件系統(tǒng)事件的 API 和 shell 工具 日期和時(shí)間
操作日期和時(shí)間的類庫(kù)。
arrow- 更好的 Python 日期時(shí)間操作類庫(kù)。 Chronyk – Python 3 的類庫(kù),用于解析手寫(xiě)格式的時(shí)間和日期。 dateutil – Python datetime 模塊的擴(kuò)展。 delorean- 解決 Python 中有關(guān)日期處理的棘手問(wèn)題的庫(kù)。 moment – 一個(gè)用來(lái)處理時(shí)間和日期的Python庫(kù)。靈感來(lái)自于Moment.js。 PyTime – 一個(gè)簡(jiǎn)單易用的Python模塊,用于通過(guò)字符串來(lái)操作日期/時(shí)間。 pytz – 現(xiàn)代以及歷史版本的世界時(shí)區(qū)定義。將時(shí)區(qū)數(shù)據(jù)庫(kù)引入Python。 when.py – 提供用戶友好的函數(shù)來(lái)幫助用戶進(jìn)行常用的日期和時(shí)間操作。 文本處理
用于解析和操作文本的庫(kù)。
通用 chardet – 字符編碼檢測(cè)器,兼容 Python2 和 Python3。 difflib – (Python 標(biāo)準(zhǔn)庫(kù))幫助我們進(jìn)行差異化比較。 ftfy – 讓Unicode文本更完整更連貫。 fuzzywuzzy – 模糊字符串匹配。 Levenshtein – 快速計(jì)算編輯距離以及字符串的相似度。 pangu.py – 在中日韓語(yǔ)字符和數(shù)字字母之間添加空格。 pyfiglet -figlet 的 Python實(shí)現(xiàn)。 shortuuid – 一個(gè)生成器庫(kù),用以生成簡(jiǎn)潔的,明白的,URL 安全的 UUID。 unidecode – Unicode 文本的 ASCII 轉(zhuǎn)換形式 。 uniout – 打印可讀的字符,而不是轉(zhuǎn)義的字符串。 xpinyin – 一個(gè)用于把漢字轉(zhuǎn)換為拼音的庫(kù)。 Slug化 awesome-slugify – 一個(gè) Python slug 化庫(kù),可以保持 Unicode。 python-slugify – Python slug 化庫(kù),可以把 unicode 轉(zhuǎn)化為 ASCII。 unicode-slugify – 一個(gè) slug 工具,可以生成 unicode slugs ,需要依賴 Django 。 解析器 phonenumbers – 解析,格式化,儲(chǔ)存,驗(yàn)證電話號(hào)碼。 PLY – lex 和 yacc 解析工具的 Python 實(shí)現(xiàn)。 Pygments – 通用語(yǔ)法高亮工具。 pyparsing – 生成通用解析器的框架。 python-nameparser – 把一個(gè)人名分解為幾個(gè)獨(dú)立的部分。 python-user-agents – 瀏覽器 user agent 解析器。 sqlparse – 一個(gè)無(wú)驗(yàn)證的 SQL 解析器。 特殊文本格式處理
一些用來(lái)解析和操作特殊文本格式的庫(kù)。
通用 tablib – 一個(gè)用來(lái)處理中表格數(shù)據(jù)的模塊。 Office Marmir – 把輸入的Python 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為電子表單。 openpyxl – 一個(gè)用來(lái)讀寫(xiě) Excel 2010 xlsx/xlsm/xltx/xltm 文件的庫(kù)。 python-docx – 讀取,查詢以及修改 Microsoft Word 2007/2008 docx 文件。 unoconv – 在 LibreOffice/OpenOffice 支持的任意文件格式之間進(jìn)行轉(zhuǎn)換。 XlsxWriter – 一個(gè)用于創(chuàng)建 Excel .xlsx 文件的 Python 模塊。 xlwings – 一個(gè)使得在 Excel 中方便調(diào)用 Python 的庫(kù)(反之亦然),基于 BSD 協(xié)議。 xlwt / xlrd – 讀寫(xiě) Excel 文件的數(shù)據(jù)和格式信息。 relatorio – 模板化OpenDocument 文件。 PDF PDFMiner – 一個(gè)用于從PDF文檔中抽取信息的工具。 PyPDF2 – 一個(gè)可以分割,合并和轉(zhuǎn)換 PDF 頁(yè)面的庫(kù)。 ReportLab – 快速創(chuàng)建富文本 PDF 文檔。 Markdown Mistune – 快速并且功能齊全的純 Python 實(shí)現(xiàn)的 Markdown 解析器。 Python-Markdown – John Gruber’s Markdown 的 Python 版實(shí)現(xiàn)。 YAML PyYAML – Python 版本的 YAML 解析器。 CSV csvkit – 用于轉(zhuǎn)換和操作 CSV 的工具。 Archive unp – 一個(gè)用來(lái)方便解包歸檔文件的命令行工具。 自然語(yǔ)言處理
用來(lái)處理人類語(yǔ)言的庫(kù)。
NLTK – 一個(gè)先進(jìn)的平臺(tái),用以構(gòu)建處理人類語(yǔ)言數(shù)據(jù)的 Python 程序。 jieba – 中文分詞工具。 langid.py – 獨(dú)立的語(yǔ)言識(shí)別系統(tǒng)。 Pattern – Python 網(wǎng)絡(luò)信息挖掘模塊。 SnowNLP – 一個(gè)用來(lái)處理中文文本的庫(kù)。 TextBlob – 為進(jìn)行普通自然語(yǔ)言處理任務(wù)提供一致的 API。 TextGrocery – 一簡(jiǎn)單高效的短文本分類工具,基于 LibLinear 和 Jieba。 文檔
用以生成項(xiàng)目文檔的庫(kù)。
Sphinx – Python 文檔生成器。 awesome-sphinxdoc MkDocs – 對(duì) Markdown 友好的文檔生成器。 pdoc – 一個(gè)可以替換Epydoc 的庫(kù),可以自動(dòng)生成 Python 庫(kù)的 API 文檔。 Pycco – 文學(xué)編程(literate-programming)風(fēng)格的文檔生成器。 配置
用來(lái)保存和解析配置的庫(kù)。
config – logging 模塊作者寫(xiě)的分級(jí)配置模塊。 ConfigObj – INI 文件解析器,帶驗(yàn)證功能。 ConfigParser – (Python 標(biāo)準(zhǔn)庫(kù)) INI 文件解析器。 profig – 通過(guò)多種格式進(jìn)行配置,具有數(shù)值轉(zhuǎn)換功能。 python-decouple – 將設(shè)置和代碼完全隔離。 命令行工具
用于創(chuàng)建命令行程序的庫(kù)。
命令行程序開(kāi)發(fā) cement – Python 的命令行程序框架。 click – 一個(gè)通過(guò)組合的方式來(lái)創(chuàng)建精美命令行界面的包。 cliff – 一個(gè)用于創(chuàng)建命令行程序的框架,可以創(chuàng)建具有多層命令的命令行程序。 clint – Python 命令行程序工具。 colorama – 跨平臺(tái)彩色終端文本。 docopt – Python 風(fēng)格的命令行參數(shù)解析器。 Gooey – 一條命令,將命令行程序變成一個(gè) GUI 程序。 python-prompt-toolkit – 一個(gè)用于構(gòu)建強(qiáng)大的交互式命令行程序的庫(kù)。 生產(chǎn)力工具 aws-cli – Amazon Web Services 的通用命令行界面。 bashplotlib – 在終端中進(jìn)行基本繪圖。 caniusepython3 – 判斷是哪個(gè)項(xiàng)目妨礙你你移植到 Python 3。 cookiecutter – 從 cookiecutters(項(xiàng)目模板)創(chuàng)建項(xiàng)目的一個(gè)命令行工具。 doitlive – 一個(gè)用來(lái)在終端中進(jìn)行現(xiàn)場(chǎng)演示的工具。 howdoi – 通過(guò)命令行獲取即時(shí)的編程問(wèn)題解答。 httpie – 一個(gè)命令行HTTP 客戶端,cURL 的替代品,易用性更好。 PathPicker – 從bash輸出中選出文件。 percol – 向UNIX shell 傳統(tǒng)管道概念中加入交互式選擇功能。 SAWS – 一個(gè)加強(qiáng)版的 AWS 命令行。 thefuck – 修正你之前的命令行指令。 mycli – 一個(gè) MySQL 命令行客戶端,具有自動(dòng)補(bǔ)全和語(yǔ)法高亮功能。 pgcli – Postgres 命令行工具,具有自動(dòng)補(bǔ)全和語(yǔ)法高亮功能。 下載器
用來(lái)進(jìn)行下載的庫(kù).
s3cmd – 一個(gè)用來(lái)管理Amazon S3 和 CloudFront 的命令行工具。 s4cmd – 超級(jí) S3 命令行工具,性能更加強(qiáng)勁。 you-get – 一個(gè) YouTube/Youku/Niconico 視頻下載器,使用 Python3 編寫(xiě)。 youtube-dl – 一個(gè)小巧的命令行程序,用來(lái)下載 YouTube 視頻。 圖像處理
用來(lái)操作圖像的庫(kù).
pillow – Pillow 是一個(gè)更加易用版的 PIL。 hmap – 圖像直方圖映射。 imgSeek – 一個(gè)使用視覺(jué)相似性搜索一組圖片集合的項(xiàng)目。 nude.py – 裸體檢測(cè)。 pyBarcode – 不借助 PIL 庫(kù)在 Python 程序中生成條形碼。 pygram – 類似 Instagram 的圖像濾鏡。 python-qrcode – 一個(gè)純 Python 實(shí)現(xiàn)的二維碼生成器。 Quads – 基于四叉樹(shù)的計(jì)算機(jī)藝術(shù)。 scikit-image – 一個(gè)用于(科學(xué))圖像處理的 Python 庫(kù)。 thumbor – 一個(gè)小型圖像服務(wù),具有剪裁,尺寸重設(shè)和翻轉(zhuǎn)功能。 wand – MagickWand的Python 綁定。MagickWand 是 ImageMagick的 C API 。 OCR
光學(xué)字符識(shí)別庫(kù)。
pyocr – Tesseract 和 Cuneiform 的一個(gè)封裝(wrapper)。 pytesseract – Google Tesseract OCR 的另一個(gè)封裝(wrapper)。 python-tesseract – Google Tesseract OCR 的一個(gè)包裝類。 音頻
用來(lái)操作音頻的庫(kù)
audiolazy -Python 的數(shù)字信號(hào)處理包。 audioread – 交叉庫(kù) (GStreamer + Core Audio + MAD + FFmpeg) 音頻解碼。 beets – 一個(gè)音樂(lè)庫(kù)管理工具及 MusicBrainz 標(biāo)簽添加工具 dejavu – 音頻指紋提取和識(shí)別 django-elastic-transcoder – Django + Amazon Elastic Transcoder。 eyeD3 – 一個(gè)用來(lái)操作音頻文件的工具,具體來(lái)講就是包含 ID3 元信息的 MP3 文件。 id3reader – 一個(gè)用來(lái)讀取 MP3 元數(shù)據(jù)的 Python 模塊。 m3u8 – 一個(gè)用來(lái)解析 m3u8 文件的模塊。 mutagen – 一個(gè)用來(lái)處理音頻元數(shù)據(jù)的 Python 模塊。 pydub – 通過(guò)簡(jiǎn)單、簡(jiǎn)潔的高層接口來(lái)操作音頻文件。 pyechonest – Echo Nest API 的 Python 客戶端 talkbox – 一個(gè)用來(lái)處理演講/信號(hào)的 Python 庫(kù) TimeSide – 開(kāi)源 web 音頻處理框架。 tinytag – 一個(gè)用來(lái)讀取MP3, OGG, FLAC 以及 Wave 文件音樂(lè)元數(shù)據(jù)的庫(kù)。 mingus – 一個(gè)高級(jí)音樂(lè)理論和曲譜包,支持 MIDI 文件和回放功能。 視頻
用來(lái)操作視頻和GIF的庫(kù)。
moviepy – 一個(gè)用來(lái)進(jìn)行基于腳本的視頻編輯模塊,適用于多種格式,包括動(dòng)圖 GIFs。 scikit-video – SciPy 視頻處理常用程序。 地理位置
地理編碼地址以及用來(lái)處理經(jīng)緯度的庫(kù)。
GeoDjango – 世界級(jí)地理圖形 web 框架。 GeoIP – MaxMind GeoIP Legacy 數(shù)據(jù)庫(kù)的 Python API。 geojson – GeoJSON 的 Python 綁定及工具。 geopy – Python 地址編碼工具箱。 pygeoip – 純 Python GeoIP API。 django-countries – 一個(gè) Django 應(yīng)用程序,提供用于表格的國(guó)家選擇功能,國(guó)旗圖標(biāo)靜態(tài)文件以及模型中的國(guó)家字段。 HTTP
使用HTTP的庫(kù)。
requests – 人性化的HTTP請(qǐng)求庫(kù)。 grequests – requests 庫(kù) + gevent ,用于異步 HTTP 請(qǐng)求. httplib2 – 全面的 HTTP 客戶端庫(kù)。 treq – 類似 requests 的Python API 構(gòu)建于 Twisted HTTP 客戶端之上。 urllib3 – 一個(gè)具有線程安全連接池,支持文件 post,清晰友好的 HTTP 庫(kù)。 數(shù)據(jù)庫(kù)
Python實(shí)現(xiàn)的數(shù)據(jù)庫(kù)。
pickleDB – 一個(gè)簡(jiǎn)單,輕量級(jí)鍵值儲(chǔ)存數(shù)據(jù)庫(kù)。 PipelineDB – 流式 SQL 數(shù)據(jù)庫(kù)。 TinyDB – 一個(gè)微型的,面向文檔型數(shù)據(jù)庫(kù)。 ZODB – 一個(gè) Python 原生對(duì)象數(shù)據(jù)庫(kù)。一個(gè)鍵值和對(duì)象圖數(shù)據(jù)庫(kù)。 數(shù)據(jù)庫(kù)驅(qū)動(dòng)
用來(lái)連接和操作數(shù)據(jù)庫(kù)的庫(kù)。
MySQL – awesome-mysql系列 mysql-python – Python 的 MySQL 數(shù)據(jù)庫(kù)連接器。 mysqlclient – mysql-python 分支,支持 Python 3。 oursql – 一個(gè)更好的 MySQL 連接器,支持原生預(yù)編譯指令和 BLOBs. PyMySQL – 純 Python MySQL 驅(qū)動(dòng),兼容 mysql-python。 PostgreSQL psycopg2 – Python 中最流行的 PostgreSQL 適配器。 queries – psycopg2 庫(kù)的封裝,用來(lái)和 PostgreSQL 進(jìn)行交互。 txpostgres – 基于 Twisted 的異步 PostgreSQL 驅(qū)動(dòng)。 其他關(guān)系型數(shù)據(jù)庫(kù) apsw – 另一個(gè) Python SQLite封裝。 dataset – 在數(shù)據(jù)庫(kù)中存儲(chǔ)Python字典 – 可以協(xié)同SQLite,MySQL,和 PostgreSQL工作。 pymssql- 一個(gè)簡(jiǎn)單的Microsoft SQL Server數(shù)據(jù)庫(kù)接口。 NoSQL 數(shù)據(jù)庫(kù) cassandra-python-driver – Cassandra 的 Python 驅(qū)動(dòng)。 HappyBase – 一個(gè)為 Apache HBase 設(shè)計(jì)的,對(duì)開(kāi)發(fā)者友好的庫(kù)。 Plyvel – 一個(gè)快速且功能豐富的 LevelDB 的 Python 接口。 py2neo – Neo4j restful 接口的Python 封裝客戶端。 pycassa – Cassandra 的 Python Thrift 驅(qū)動(dòng)。 PyMongo – MongoDB 的官方 Python 客戶端。 redis-py – Redis 的 Python 客戶端。 telephus – 基于 Twisted 的 Cassandra 客戶端。 txRedis – 基于 Twisted 的 Redis 客戶端。 ORM
實(shí)現(xiàn)對(duì)象關(guān)系映射或數(shù)據(jù)映射技術(shù)的庫(kù)。
關(guān)系型數(shù)據(jù)庫(kù) Django Models – Django 的一部分。 SQLAlchemy – Python SQL 工具以及對(duì)象關(guān)系映射工具。 awesome-sqlalchemy系列 Peewee – 一個(gè)小巧,富有表達(dá)力的 ORM。 PonyORM – 提供面向生成器的 SQL 接口的 ORM。 python-sql – 編寫(xiě) Python 風(fēng)格的 SQL 查詢。 NoSQL 數(shù)據(jù)庫(kù) django-mongodb-engine – Django MongoDB 后端。 PynamoDB – Amazon DynamoDB 的一個(gè) Python 風(fēng)格接口。 flywheel – Amazon DynamoDB 的對(duì)象映射工具。 MongoEngine – 一個(gè)Python 對(duì)象文檔映射工具,用于 MongoDB。 hot-redis – 為 Redis 提供 Python 豐富的數(shù)據(jù)類型。 redisco – 一個(gè) Python 庫(kù),提供可以持續(xù)存在在 Redis 中的簡(jiǎn)單模型和容器。 其他 butterdb – Google Drive 電子表格的 Python ORM。 Web 框架
全棧 web 框架。
Django – Python 界最流行的 web 框架。 awesome-django系列 Flask – 一個(gè) Python 微型框?...
如何安裝Python數(shù)據(jù)科學(xué)計(jì)算庫(kù)? 營(yíng)銷視頻課程
前言
如何使用Python進(jìn)行科學(xué)計(jì)算和數(shù)據(jù)分析,這里我們就要用到Python的科學(xué)計(jì)算庫(kù),今天來(lái)分享一下如何安裝Python的數(shù)據(jù)科學(xué)計(jì)算庫(kù)。
數(shù)據(jù)科學(xué)計(jì)算庫(kù)
Python中的數(shù)據(jù)科學(xué)計(jì)算庫(kù)有Numpy、Scipy、pandas、matplotlib(前面我分享了一篇matplotlib的簡(jiǎn)單應(yīng)用,歷史文章里面就有)。
Numpy是一個(gè)基礎(chǔ)性的Python庫(kù),為我們提供了常用的數(shù)值數(shù)組和函數(shù)。
Scipy是Python的科學(xué)計(jì)算庫(kù),對(duì)Numpy的功能進(jìn)行了擴(kuò)充,同時(shí)也有部分功能是重合的。Numpy和Scipy曾經(jīng)共享過(guò)基礎(chǔ)代碼。
pandas是一個(gè)流行的開(kāi)源Python項(xiàng)目,它的名稱取panel data(面板數(shù)據(jù),一個(gè)計(jì)量經(jīng)濟(jì)學(xué)的術(shù)語(yǔ))和Python data analysis(Python數(shù)據(jù)分析)的意思。
matplotlib是一個(gè)基于Numpy的繪圖庫(kù)。
庫(kù)的安裝
安裝這些庫(kù)之前要先安裝Python,默認(rèn)已全部安裝,(Windows直接下載安裝,Linux自帶2.7版本,可以自行安裝3.6版本)。
為了節(jié)約時(shí)間在更重要的知識(shí)上,這里只介紹最簡(jiǎn)單的安裝方式,即包管理工具安裝Python庫(kù)。
不管是Windows和Linux下,都可以在命令行下直接使用下面的命令來(lái)安裝相關(guān)的庫(kù),前提是已經(jīng)安裝了pip包(pip包管理工具的相關(guān)安裝可以看原文這里有鏈接):
pip install numpy scipy pandas matplotlib或(easy_install是Python自帶的)easy_install numpy scipy pandas matplotlib#Linux下安裝pip包sudo apt-get install python-pip
說(shuō)明:Linux下如果涉及權(quán)限問(wèn)題則需要開(kāi)頭添加sudo。安裝示例如下所示:
Numpy數(shù)組簡(jiǎn)單示例
我們已經(jīng)安裝好了numpy,然后就可以來(lái)個(gè)簡(jiǎn)單的小測(cè)試了。與傳統(tǒng)的Python列表相比,進(jìn)行數(shù)值運(yùn)算時(shí),numpy數(shù)組的效率要高的多。
完成相同的運(yùn)算時(shí),numpy代碼和Python傳統(tǒng)代碼相比用到的顯式循環(huán)語(yǔ)句明顯要少,因?yàn)閚umpy是基于向量化的運(yùn)算。
假設(shè)要對(duì)向量a和b進(jìn)行求和,這里的向量指的是一個(gè)“一維數(shù)組”,a存放的是整數(shù)0到n-1的2次冪,如果n等于3,則a存的是0、1、4,向量b存的是整數(shù)0到n的3次冪,下面來(lái)看一下普通Python代碼和numpy來(lái)計(jì)算的差別:
先看代碼:
#filename:vectorsSum.pyimport sysfrom datetime import datetimeimport numpy as np#numpy方法def numpySum(n):a = np.arange(n, dtype = 'int64')**2#3次冪太大會(huì)溢出,注意(后面細(xì)說(shuō))b = np.arange(n, dtype = 'int64')**3c = a + breturn c#普通方法def pythonSum(n):#range() 返回的是“range object”,而不是實(shí)際的list 值,所以這里要加上lista = list(range(n))b = list(range(n))c = []for i in range(len(a)):a[i] = i ** 2b[i] = i ** 3c.append(a[i] + b[i])return csize = int(sys.argv[1])start = datetime.now()c = pythonSum(size)delta = datetime.now() - startprint ("最后兩個(gè)元素的和:", c[-2:])print ("pythonSum花費(fèi)的時(shí)間(微秒)", delta.microseconds)start = datetime.now()c = numpySum(size)delta = datetime.now() - startprint ("最后兩個(gè)元素的和:", c[-2:])print ("numpySum花費(fèi)的時(shí)間(微秒)", delta.microseconds)#下面測(cè)試一下對(duì)與1000個(gè),2000個(gè),3000個(gè)向量元素,運(yùn)行結(jié)果如下圖所示。
看一下運(yùn)行結(jié)果:
上面的結(jié)果看到,numpy的計(jì)算效率比普通的方法要快不少,所以開(kāi)始學(xué)習(xí)吧。
小結(jié)
今天學(xué)習(xí)一下Python中的幾個(gè)科學(xué)計(jì)算庫(kù)的安裝以及使用numpy進(jìn)行簡(jiǎn)單的求和計(jì)算。希望通過(guò)上面的操作能幫助大家。如果你有什么好的意見(jiàn),建議,或者有不同的看法,歡迎留言和我們進(jìn)行交流、討論。
End.
文章轉(zhuǎn)載來(lái)源:CDA數(shù)據(jù)分析師
2017年最流行的十大Python庫(kù) 企業(yè)視頻課程
年末是你需要思考過(guò)去一年的成就的時(shí)候。對(duì)于程序員來(lái)說(shuō),這通常是回顧今年發(fā)布的或者最近流行的開(kāi)源庫(kù),因?yàn)樗鼈兪墙鉀Q特定問(wèn)題的絕佳工具。
在過(guò)去的兩個(gè)多年中,我們都會(huì)在博客中選取我們認(rèn)為在Python社區(qū)最有用的庫(kù)。今年也是如此。
這一次,這份列表基本都是機(jī)器學(xué)習(xí)(ML)的庫(kù)。請(qǐng)非ML庫(kù)的作者而且能夠諒解,這都怪我們的偏見(jiàn)。希望在讀到本文的人能評(píng)論并提出一些被我們忽略的偉大的庫(kù)幫助我們矯正它。
那么,讓我們開(kāi)始盤(pán)點(diǎn)吧!
1. Pipenv
鏈接:https://github/pypa/pipenv
我們?yōu)榻衲昴瓿醢l(fā)布的這個(gè)工具排到榜首,它有能力影響每個(gè)Python開(kāi)發(fā)者的工作流程,它已經(jīng)成為Python管理依賴項(xiàng)的官方推薦工具。
https://packaging.python.org/tutorials/managing-dependencies/#installing-pipenv
Pipenv最初是由Kenneth Reitz創(chuàng)立的一個(gè)周末項(xiàng)目,旨在將其他包管理者(如npm或yarn)的創(chuàng)意帶入Python中。不再去安裝virtualenv,virtualenvwrapper,管理requirements.txt文件,并確保對(duì)依賴項(xiàng)的依賴版本的再現(xiàn)性(https://kennethreitz.org/essays/a-better-pip-workflow)。使用Pipenv,你可以在Pipfile中指定所有的依賴關(guān)系(通常使用命令添加,刪除或更新依賴關(guān)系)。該工具可以生成一個(gè)Pipfile.lock文件,使你的構(gòu)建deterministic,幫助你避免那些因?yàn)槟悴恢朗欠裥枰哪:蕾嚠a(chǎn)生的難以捕捉的bug。
當(dāng)然,Pipenv還有很多其他的特性,并且它的文檔非常好,所以一定要看一下,并且在你所有的Python項(xiàng)目中使用它,就像我們?cè)赥ryolabs中做的那樣。
2. PyTorch
鏈接:http://pytorch.org/
說(shuō)到今年流行,尤其是在深度學(xué)習(xí)(DL)社區(qū)流行的庫(kù),那就要提到今年Facebook推出的DL框架PyTorch。
PyTorch構(gòu)建并改進(jìn)了流行的Torch框架,與Lua不同它是基于Python的。由于最近幾年人們大多轉(zhuǎn)向使用Python進(jìn)行數(shù)據(jù)科學(xué)研究,它是讓DL更容易接近的重要一步。
最值得注意的是,PyTorch已經(jīng)成為眾多研究人員的首選框架之一,因?yàn)樗鼘?shí)現(xiàn)了動(dòng)態(tài)計(jì)算圖(Dynamic Computational Graph)范式。當(dāng)使用TensorFlow,CNTK或MXNet等其他框架編寫(xiě)代碼時(shí),必須首先定義計(jì)算圖。該圖指定了我們的代碼運(yùn)行的所有操作,這些操作稍后會(huì)被編譯并可能被框架優(yōu)化,以便能夠在GPU上并行運(yùn)行得更快。這個(gè)范式被稱為靜態(tài)計(jì)算圖,因?yàn)槟憧梢岳酶鞣N優(yōu)化,而且這個(gè)圖形一旦建成,就有可能運(yùn)行在不同的設(shè)備上(因?yàn)閳?zhí)行與構(gòu)建分離)。然而,在自然語(yǔ)言處理等許多任務(wù)中,工作的量通常是可變的:在將圖像提供給算法之前,可以將圖像調(diào)整為固定的分辨率,但不能對(duì)可變長(zhǎng)度的句子進(jìn)行相同的處理。這是PyTorch和動(dòng)態(tài)圖的亮點(diǎn),通過(guò)在代碼中使用標(biāo)準(zhǔn)的Python控制指令,圖在執(zhí)行時(shí)被定義,給了你很多這對(duì)于一些任務(wù)來(lái)說(shuō)必不可少的自由。
當(dāng)然,PyTorch也為你計(jì)算梯度(就像你期望從任何現(xiàn)代的DL框架中獲得的那樣),速度非???,而且是可擴(kuò)展的,所以為什么不試試呢?
3. caffe2
鏈接:https://caffe2.ai/
這可能聽(tīng)起來(lái)很瘋狂,但Facebook今年也發(fā)布了另一個(gè)很棒的DL框架。
原來(lái)的Caffe框架已被大眾使用多年,以無(wú)與倫比的性能和久經(jīng)考驗(yàn)的代碼庫(kù)而聞名。然而,最近DL的趨勢(shì)使這個(gè)框架在某些方面停滯不前。Caffe2是將Caffe帶入“現(xiàn)代世界”的嘗試。
它支持分布式訓(xùn)練,部署(即使在移動(dòng)平臺(tái)上),最新的CPU并且支持CUDA的硬件。雖然PyTorch可能更適合研究,但Caffe2適合在Facebook上看到的大規(guī)模部署。
另外,請(qǐng)看看近期的ONNX。你可以在PyTorch中構(gòu)建和訓(xùn)練模型,同時(shí)使用Caffe2進(jìn)行部署!
4. Pendulum
鏈接:https://github/sdispater/pendulum
去年,Arrow被列入榜單,它旨在通過(guò)使用Python的datetime讓你生活輕松一些。而今年,我們輪到Pendulum了。
Pendulum的優(yōu)點(diǎn)之一是它是Python標(biāo)準(zhǔn)datetime類嵌入式的替代品,因此可以輕松地將其與現(xiàn)有代碼集成,并且只有在實(shí)際需要時(shí)才使用它的功能。者已經(jīng)特別注意確保正確地處理時(shí)區(qū),默認(rèn)每個(gè)實(shí)例的timezone-aware和UTC。你也將得到一個(gè)擴(kuò)展timedelta,使datetime算法更簡(jiǎn)單。
與其他現(xiàn)有的庫(kù)不同,它努力使API具有可預(yù)測(cè)的行為,所以你知道會(huì)發(fā)生什么。如果你正在做任何與datetimes有關(guān)的重要工作,這會(huì)讓你更快樂(lè)?。ú榭锤啵篽ttps://pendulum.eustace.io/docs/)。
5. Dash
https://plot.ly/products/dash/
如果你正在做數(shù)據(jù)科學(xué),你會(huì)使用Python生態(tài)系統(tǒng)中的優(yōu)秀工具,比如Pandas和scikit-learn。并在工作流程使用Jupyter Notebooks,這對(duì)你和你的同事來(lái)說(shuō)非常棒。但是,你如何與那些不知道如何使用這些工具的人分享這項(xiàng)工作呢?你如何建立一個(gè)界面,使人們可以輕松地使用數(shù)據(jù),可視化過(guò)程?過(guò)去,你需要一個(gè)前端團(tuán)隊(duì),用Javascript知識(shí)來(lái)構(gòu)建這些GUI。但現(xiàn)在不用了。
今年宣布的Dash是一個(gè)用于構(gòu)建Web應(yīng)用程序的Python開(kāi)源庫(kù),尤其是那些充分利用數(shù)據(jù)可視化的Web應(yīng)用程序。它建立在Flask,Plotly.js和React的基礎(chǔ)上,并提供了抽象,使你不必學(xué)習(xí)這些框架,更高效的研發(fā)。這些應(yīng)用程序可以在瀏覽器中呈現(xiàn)并響應(yīng),因此在移動(dòng)設(shè)備中也能使用。
了解更多關(guān)于Dash:https://plot.ly/dash/gallery
6.PyFlux
Python中有許多庫(kù)用來(lái)做數(shù)據(jù)科學(xué)和ML,但是當(dāng)你的數(shù)據(jù)點(diǎn)是隨著時(shí)間的推移而變化的度量(例如股票價(jià)格,從儀表中獲得的度量等等)時(shí),這樣的庫(kù)就很少了。
PyFlux是一個(gè)專門(mén)為時(shí)間序列而開(kāi)發(fā)的 Python開(kāi)源庫(kù)。時(shí)間序列研究是統(tǒng)計(jì)學(xué)和計(jì)量經(jīng)濟(jì)學(xué)的一個(gè)分支,目標(biāo)可以描述時(shí)間序列的表現(xiàn)(依據(jù)隱藏組件或特征),也能預(yù)測(cè)時(shí)間序列未來(lái)的表現(xiàn)。
PyFlux允許用于時(shí)間序列建模的概率方法,并且已經(jīng)實(shí)現(xiàn)了幾個(gè)像GARCH這樣的現(xiàn)代時(shí)間序列模型。
7.Fire
https://github/google/python-fire
通常情況下,你需要為自己的項(xiàng)目制作命令行界面(CLI)。除了傳統(tǒng)的argparse,Python中還有click或docopt可用。谷歌今年宣布的Fire,在解決同樣的問(wèn)題上提出了不同的方法。
Fire是一個(gè)開(kāi)源的庫(kù),可以為任何Python項(xiàng)目自動(dòng)生成一個(gè)CLI。沒(méi)錯(cuò),是自動(dòng)的:你幾乎不需要編寫(xiě)任何代碼或文檔來(lái)構(gòu)建你的CLI!想完成你的CLI,只需要調(diào)用一個(gè)Fire方法并把它傳遞給一個(gè)CLI:一個(gè)函數(shù),一個(gè)對(duì)象,一個(gè)類,一個(gè)字典,甚至你可以不傳遞任何參數(shù)(這會(huì)將你的整個(gè)代碼轉(zhuǎn)換為一個(gè)CLI)。這個(gè)庫(kù)可以為你節(jié)省很多時(shí)間。
8.imbalanced-learn
https://github/scikit-learn-contrib/imbalanced-learn
在一個(gè)完美世界的里,我們會(huì)有完美平衡的數(shù)據(jù)集,我們將它們都拿來(lái)將訓(xùn)練模型,多么美好??上КF(xiàn)實(shí)世界不是這樣的,某些任務(wù)更傾向于不平衡的數(shù)據(jù)。例如,在預(yù)測(cè)信用卡交易中的欺詐行為時(shí),你會(huì)預(yù)測(cè)絕大多數(shù)交易(+ 99.9%)實(shí)際上是合法的。如果我們簡(jiǎn)單的訓(xùn)練ML算法會(huì)出現(xiàn)令人沮喪的性能,所以在處理這些類型的數(shù)據(jù)集時(shí)需要特別小心。
幸運(yùn)的是,這是一個(gè)已經(jīng)被研究過(guò)的問(wèn)題,存在各種各樣解決的技術(shù)。Imbalanced-learn是一個(gè)Python包,它提供了關(guān)于這些技術(shù)的實(shí)現(xiàn)。它與scikit-learn兼容,是scikit-learn-contrib項(xiàng)目的一部分。
9. FlashText
https://github/vi3k6i5/flashtext
如果您需要搜索某些文本并將其替換為其他內(nèi)容(如大多數(shù)數(shù)據(jù)清理工作),則通常將其轉(zhuǎn)為正則表達(dá)式。他們能很好地完成這項(xiàng)工作,但是有時(shí)會(huì)發(fā)生這樣的情況:需要搜索的數(shù)以千計(jì)的內(nèi)容,正則表達(dá)式可能會(huì)非常緩慢。
為此,F(xiàn)lashText是一個(gè)更好的選擇。它使整個(gè)操作的運(yùn)行時(shí)間大大提高了。FlashText的優(yōu)點(diǎn)在于無(wú)論搜索條件有多少,運(yùn)行時(shí)都是一樣的,而正則表達(dá)式中運(yùn)行時(shí)幾乎是隨著條件數(shù)呈線性增長(zhǎng)。
FlashText證明了算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的重要性,即使對(duì)于簡(jiǎn)單的問(wèn)題,更好的算法也可以很容易地勝過(guò)最快的cpu運(yùn)行簡(jiǎn)單的實(shí)現(xiàn)。
10. Luminoth
https://luminoth.ai/
現(xiàn)在,圖像無(wú)處不在,理解它的內(nèi)容對(duì)于許多應(yīng)用程序來(lái)說(shuō)至關(guān)重要。值得慶幸的是,由于DL的進(jìn)步,圖像處理技術(shù)已經(jīng)進(jìn)步了很多。
Luminoth是一個(gè)使用TensorFlow和Sonnet構(gòu)建的用于計(jì)算機(jī)視覺(jué)的開(kāi)源Python工具包。目前,它可以支持以Faster R-CNN模型的形式進(jìn)行對(duì)象檢測(cè)。
但是Luminoth不僅是一個(gè)特定模型的實(shí)現(xiàn)。它是被構(gòu)建為模塊化和可擴(kuò)展,所以可以直接定制現(xiàn)有的部分或者將其擴(kuò)展為新的模型來(lái)處理不同的問(wèn)題,盡可能多地復(fù)用代碼。它提供的工具可以輕松完成構(gòu)建DL模型所需的工程工作:將數(shù)據(jù)(在本例中為圖像)轉(zhuǎn)換合適的格式輸送到數(shù)據(jù)管道(TensorFlow的tfrecords)中,執(zhí)行數(shù)據(jù)增強(qiáng),在一個(gè)或多個(gè)gpu上運(yùn)行訓(xùn)練(使用大型數(shù)據(jù)集時(shí)必須進(jìn)行分布式培訓(xùn)),運(yùn)行評(píng)估度量,輕松地在TensorBoard中可視化 并用簡(jiǎn)單的API或?yàn)g覽器界面部署訓(xùn)練號(hào)的模型,以便人們使用。
此外,Luminoth直接與Google Cloud的ML Engine集成,所以即使你沒(méi)有強(qiáng)大的GPU,也可以使用命令在云端進(jìn)行訓(xùn)練。
本文為編譯文章,轉(zhuǎn)載請(qǐng)注明出處。
來(lái)源:atyun_com
來(lái)源網(wǎng)址:http://atyun/13563_2017最流行的十大python庫(kù).html