這是第六屆年度 Python 庫排行榜。這個排行榜的依據是什麼?規則很簡單。咱們尋找的庫須要知足下列條件:python
它們是在 2020 年推出或普及的。git
它們從發佈後就一直有良好的維護。程序員
免責聲明:今年,咱們的選擇受到機器學習 / 數據科學庫的極大影響,雖然有些庫對非數據科學家來講確實頗有用。另外,儘管咱們有 10 個主要的精選(以及一個獎勵),但咱們仍是決定增長一個新的「榮譽提名」部分,以便公平對待咱們發現但又不能遺漏的其餘庫。github
你沒必要老是要編寫 CLI 應用程序,可是在編寫 CLI 時,最好是無障礙的體驗。繼 FastAPI 巨大成功以後,Sebastián Ramírez 用一樣的原則爲咱們帶來了 Typer:一個新的庫,經過利用 Python 3.6+ 的類型提示功能,能夠編寫命令行界面。算法
這個設計確實使 Typer 脫穎而出。除確保你的代碼被正確地記錄下來外,你還能夠經過最少的努力來得到一個帶有驗證的 CLI 接口。使用類型提示,你能夠在 Python 編輯器中得到自動完成功能(好比 VSCode),從而提升工做效率。服務器
爲加強 Typer 功能,它的內部是基於 Click 開發的,Click 是很是著名的,而且已經經過了實戰檢驗。這意味着,它能夠利用其全部的優勢、社區和插件,同時用較少的樣板代碼從簡單的開始,並在須要時添加更多的複雜性。網絡
一如既往,它的文檔真的很出色,能夠做爲其餘項目的典範。這絕對是不容錯過的做品。多線程
GitHub 項目地址:
https://github.com/tiangolo/typer架構
接着 CLI 的話題,誰說終端應用程序必須是單調的白色,若是你是一個真正的 hacker,就必須是綠色的?那黑色呢?框架
你想爲你的終端輸出加上顏色和樣式嗎?在一瞬間打開復雜的表格?輕鬆地展現華麗的進度條?Markdown?Emojis?Rich 都能知足你的要求。請看下面的截圖,來了解一下它的功能。
毫無疑問,這個庫將終端應用的使用體驗提升到了一個全新的水平。
GitHub 項目地址:
https://github.com/willmcgugan/rich
就像咱們看到的那樣,終端應用能夠作到很華麗,但有時候這還不夠,你須要一個真正的 GUI。爲此,Dear PyGui 應運而生,它是流行的 Dear ImGui C++ 項目的 Python 移植。
Dear PyGui 使用了一種被稱爲即時模式的範例,它在電子遊戲中很流行。這基本上意味着動態 GUI 是逐幀獨立繪製的,無需持久化任何數據。這樣,這個工具與其餘 Python GUI 框架就有了本質上的區別。它性能優異,並用計算機的 GPU 來促進高動態界面的構建,這在工程、模擬、遊戲或數據科學應用中是常常須要的。
不須要很是陡峭的學習曲線,Dear PyGui 就能使用,而且能夠在 Windows 10(DirectX 11)、Linux(OpenGL 3)和 MacOS(Metal)上運行。
GitHub 項目地址:
https://github.com/hoffstadt/DearPyGui
簡單的樂趣。這是讓你思考的庫之一:爲何之前沒有人想到這個問題?
PrettyErrors 只作一件事,並且作到了極致。在支持彩色輸出的終端中,它將隱祕的棧跟蹤轉換爲更適合人類眼睛解析的東西。不再用掃描整個屏幕來尋找異常的罪魁禍首了……如今,你就能夠一眼發現它!
GitHub 項目地址:
https://github.com/onelivesleft/PrettyErrors
咱們程序員喜歡解決問題和編碼。可是有時候,咱們須要把複雜的架構設計做爲項目文檔的一部分來向其餘同事解釋。傳統上,咱們會求助於 GUI 工具,經過這種方式,咱們就能夠在圖表和可視化方面作一些努力,並將其用於演示和文檔。可是,這種方式並不是惟一。
經過直接在 Python 代碼中繪製雲系統架構, Diagrams 容許你不使用任何設計工具。AWS、 Azure、 GCP 等多個雲供應商均可以輕鬆地使用它的一些圖標。這使得建立箭頭和組變得很是簡單。真的,它只有幾行代碼!
基於代碼的 Diagrams 最好的地方是什麼?經過標準 git,你能夠跟蹤版本控制的更改!開發人員將會很是高興。
GitHub 項目地址:
https://github.com/mingrammer/diagrams
當進行機器學習項目的研究和實驗時,老是有無數的設置須要嘗試。配置管理能夠變得很是複雜,而且在重要的應用程序中很是快速。要是能找處處理這類複雜問題的結構方法該多好啊。
Hydra 是一種工具,它可讓你以一種可組合的方式構建配置,並從命令行或配置文件中覆蓋某些部分。
爲了說明使用該庫所能簡化的一些常見任務,假設咱們正在實驗的模型有一個基礎架構,而且有多種變體。經過 Hydra,就能夠定義一個基礎配置,而後使用它們的變體運行多個做業。
python train_model.py variation=option_a,option_b
Hydra 的表親 OmegaConf 爲分層配置系統的基礎提供了一致的 API,支持 YAML、配置文件、對象和 CLI 參數等不一樣的源。
它們是 21 世紀進行配置管理的必備之選。
任何可以提升數據科學團隊生產力的工具都是價值連城。從事數據科學項目的人沒有理由每次都要「從新發明輪子」,反覆思考怎樣才能更好地組織項目中的代碼,怎樣才能使用維護得很差的「PyTorch 樣本代碼」,怎樣才能用潛在的控制來換取更高層次的抽象。
Lightning 經過將科學與工程脫鉤來幫助提升生產力。這有點像 TensorFlow 的 Keras,從某種程度上說,這可讓代碼更簡潔。但這並不會剝奪你的控制權。PyTorch 仍然是 PyTorch,可使用經常使用 API。
這個庫能夠幫助團隊利用軟件工程的良好實踐,組織組件並明確職責,構建高質量的代碼,從而方便地擴展到多個 GPU、 TPU 和 CPU 進行訓練。
一個庫,能夠幫助數據科學團隊中那些初級成員產生更好的結果,同時,更有經驗的成員也會喜歡它,由於它能夠在不放棄控制權的狀況下,提升總體生產力。
GitHub 項目地址:
https://github.com/PyTorchLightning/PyTorch-lightning
並不是全部的機器學習都是深度學習。不少時候,你的模型由 scikit-learn 中實現的比較傳統的算法組成(好比隨機森林),或者你使用梯度提高方法,好比流行的 LightGBM 和 XGBoost。
可是,在深度學習領域,已經有了許多進展。諸如 PyTorch 這樣的框架正在以驚人的速度發展,硬件設備也在優化,以更快的速度進行更低功耗的張量計算。若是咱們可以利用這些努力,使咱們的傳統方法運行得更快更有效,豈不美哉?
這就是 Hummingbird 的用武之地。Microsoft 的這個新庫能夠將你訓練好的傳統機器學習模型編譯成張量計算。這樣作很是好,由於這樣就無需從新設計模型。
截至目前,Hummingbird 支持向 PyTorch、TorchScript、ONNX 和 TVM,以及各類機器學習模型和矢量器的轉換。推理 API 也很是相似於 Sklearn 範式,它可讓你重用現有的代碼,可是將實現改成由 Hummingbird 生成。這是一個值得關注的工具,由於它得到了對模式模型和格式的支持!
GitHub 項目地址:
https://github.com/microsoft/hummingbird
幾乎每一位數據科學家在其職業生涯中都會在某些時候處理高維數據。遺憾的是,人類的大腦並無足夠的能力來直觀地處理這類數據,因此咱們必須藉助其餘技術。
今年年初,Facebook 發佈了 HiPlot,這是一個幫助發現高維數據中的相關性和模式的庫,它使用平行圖和其餘圖形方式來表示信息。這個概念在他們的發佈博客文章中有過解釋,可是這基本上是一個很好的方法來可視化和過濾高維數據。
HiPlot 是交互式的、可擴展的,你能夠在標準 Jupyter Notebooks 中使用 HiPlot,也能夠經過本身的服務器來使用 HiPlot。
GitHub 項目地址:
https://github.com/facebookresearch/hiplot
隨着 Python 庫的生態系統愈來愈複雜,咱們發現本身編寫的代碼愈來愈依賴於 C 擴展和多線程代碼。當涉及到測量性能時,這會成爲一個問題,由於 CPython 中內置的分析器不能正確處理多線程代碼和原生代碼。
這時,Scalene 就來救場了。Scalene 是一個 CPU 和內存分析器,它針對 Python 腳本,可以正確地處理多線程代碼,並區分運行 Python 與原生代碼所花費的時間。無需修改代碼,只須要用 Scalene 從命令行運行你的腳本,它就會爲你生成一個文本或 HTML 報告,顯示每行代碼的 CPU 和內存使用狀況。
GitHub 項目地址:
https://github.com/emeryberger/scalene
Norfair 是一個可定製的輕量級 Python 庫,用於實時對象跟蹤。換句話來講,它爲每個被檢測到的物體在不一樣的幀中分配了一個惟一的 id,容許你在它們隨時間移動的過程當中識別它們。有了 Norfair,只須要幾行代碼就能夠爲任何探測器添加跟蹤功能。「任何探測器」?是的。不管對象的表現形式是什麼樣的:一個包圍盒(4 個座標),一個單點中心點,人體姿態估計系統的輸出,或其餘具備必定機率閾值以上變量的關鍵點的物體。
用於計算被跟蹤物體與檢測點之間距離的函數由用戶定義,若是你須要,徹底能夠自定義。
它的速度也很快,並且能夠實時操做。然而,真正的優點在於它是很是模塊化的,你能夠利用你現有的檢測代碼庫,只需幾行代碼便可添加跟蹤功能。
GitHub 項目地址:https://github.com/tryolabs/norfair
quart:一個具備 Flask 兼容 API 的異步網絡框架。一些現有的 Flask 擴展甚至能夠工做。
alibi-detect:監控生產模型中的異常值和分佈漂移,適用於表格數據、文本、圖像和時間序列。
einops:einops 在 2020 年普及,可讓你爲可讀和可靠的代碼編寫張量操做,支持 NumPy、PyTorch、TensorFlow 等。Karpathy 推薦的,你還須要什麼嗎?
stanza:來自斯坦福的 60 多種語言的精確天然語言處理工具。多種可用的預訓練模型用於不一樣的任務。
datasets:來自 HuggingFace 的輕量級可擴展庫,可輕鬆共享和訪問數據集,以及用於天然語言處理等評估指標。
pytorch-forecasting:在現實世界的案例和研究中,利用神經網絡簡化時間序列預測。
sktime:提供專門的時間序列算法和 scikit-learn 兼容工具,用於構建、調整和評估複合模型。也能夠查看他們的配套 sktime-dl 包,用於基於深度學習的模型。
netron:一個用於神經網絡、深度學習和機器學習模型的可視化工具。支持的格式比我所知道的還要多。
pycaret:封裝了幾個常見的機器學習庫,使工做效率大大提升,並節省了數百行代碼。
tensor-sensor:經過改進錯誤信息和提供可視化,幫助你得到張量數學的正確維度。
原文連接:
https://tryolabs.com/blog/2020/12/21/top-10-python-libraries-of-2020/文章轉自:InfoQ