11個你可能不知道的Python庫
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
現在有如此之多的Python包,幾乎沒有人能夠全盤掌握。 光是PyPI就可單獨列出47,000個包!
近日,聽到很多資料科學家切換到Python的訊息,我不由地想到,雖然他們得到了pandas、scikit-learn和numpy的一些巨大好處,但卻錯過了一些稍微老一點但同樣能提供幫助的Python庫。
在這篇文章中,我將介紹一些鮮為人知的庫。即使你已經是Python高手,也應該看看,可能會有那麼一兩個是你從來沒有見過的!
1)delorean
Delorean是一個非常酷的日期/時間庫。它是我在Python中使用過的感覺最自然的日期/時間munging庫之一。有點像JavaScript中的moment。文件也不錯,除了在技術上有幫助,還讓無數人情不自禁地回過頭來參考。
from delorean import Delorean EST = "US/Eastern" d = Delorean(timezone=EST)
2)prettytable
很可能你還沒有聽說過prettytable,因為它列在GoogleCode上面——基本上是被流放的編碼裝備。
儘管被流放到了西伯利亞,prettytable在終端或在瀏覽器中依然是強大又美觀的構建輸出。所以,如果你正在為IPython的膝上型電腦搞新外掛的話,那就使用prettytable為你的HTML __repr__吧。
from prettytable import PrettyTable table = PrettyTable(["animal", "ferocity"]) table.add_row(["wolverine", 100]) table.add_row(["grizzly", 87]) table.add_row(["Rabbit of Caerbannog", 110]) table.add_row(["cat", -1]) table.add_row(["platypus", 23]) table.add_row(["dolphin", 63]) table.add_row(["albatross", 44]) table.sort_key("ferocity") table.reversesort = True +----------------------+----------+ | animal | ferocity | +----------------------+----------+ | Rabbit of Caerbannog | 110 | | wolverine | 100 | | grizzly | 87 | | dolphin | 63 | | albatross | 44 | | platypus | 23 | | cat | -1 | +----------------------+----------+
3)snowballstemmer
我第一次安裝snowballstemmer的原因是因為我覺得這個名字很酷。但它實際上是一個非常漂亮的小型庫。 snowballstemmer能在15種不同的語言下工作,並自帶用於引導的porter stemmer。
from snowballstemmer import EnglishStemmer, SpanishStemmer EnglishStemmer().stemWord("Gregory") # Gregori SpanishStemmer().stemWord("amarillo") # amarill
4)wget
還記得你曾因為某種目的寫的網路爬蟲(web crawler)嗎?原來是它——wget創造的。遞迴地下載網站?抓取每個頁面的每一張圖片?避開cookie 痕跡?統統只要wget。
電影《馬克·祖克伯》甚至這樣讚譽過它
首先是Kirkland,他們把一切都公開,並允許索引他們的Apache配置,所以只需要一點wget的魔術就能夠下載整個Kirkland的Facebook。太簡單了!
Python的版本帶有幾乎所有你需要的功能,並且非常易於使用。
import wget wget.download("http://www.cnn.com/") # 100% [............................................................................] 280385 / 280385
需要注意的是Linux和OSX使用者可能會操作的另一種選擇是:from sh import wget。不過,Python的wget模組確實有一些有爭議的地方。
5)PyMC
我不知道PyMC怎麼會經常被排除在組合之外。scikit-learn似乎是大家的寵兒(不過它確實很棒),但在我看來,PyMC沒有得到應有的地位。
from pymc.examples import disaster_model from pymc import MCMC M = MCMC(disaster_model) M.sample(iter=10000, burn=1000, thin=10) [-----------------100%-----------------] 10000 of 10000 complete in 1.4 sec
PyMC是一個做貝葉斯分析(Bayesian analysis)的庫。它被著重描述於Cam Davidson Pilon的《Bayesian Methods for Hackers》一文中,並已在很多流行的資料科學/ python的部落格中亮過相,但一直未能得到類似於scikit-learn的推崇。
6)sh
sh允許你將shell命令作為函式匯入到Python。它在bash中做一些簡單的事情時特別有用,但你可能已經忘記怎麼在Python(即遞迴搜尋檔案)中使用了。
from sh import find find("/tmp") /tmp/foo /tmp/foo/file1.json /tmp/foo/file2.json /tmp/foo/file3.json /tmp/foo/bar/file3.json
7)fuzzywuzzy
我使用過的最簡單的,排行前十位的庫就是fuzzywuzzy(如果你有時間的話,可以閱讀原始碼)。fuzzywuzzy是SeatGeek中的一些人構建的一個模糊字串匹配庫。
fuzzywuzzy可以實現如字串比較比率、令牌比率,以及許多其他匹配指標等工作。這對於創造特徵向量 (feature vectors)或匹配不同資料庫中的記錄特別有用。
from fuzzywuzzy import fuzz fuzz.ratio("Hit me with your best shot", "Hit me with your pet shark") # 85
8)progressbar
你知道那些你在一堆爛攤子中呼叫__main__的for迴圈執行print “still going…”指令碼嗎?那麼你為什麼不步驟化你的遊戲並使用progressbar呢?
誠如其名,progressbar確實就是進度條(progress bar)。雖然這不是一個完全的資料科學中的具體活動,但它確實很好地改善了那些超長的執行指令碼。
可惜的是,作為另一個GoogleCode的棄兒,它也沒有得到很多的關注(文件有2個空格的縮排……2啊!)。希望大家能對這個勤勞又能幹的娃多一點憐憫,阿門。
from progressbar import ProgressBar import time pbar = ProgressBar(maxval=10) for i in range(1, 11): pbar.update(i) time.sleep(1) pbar.finish() # 60% |######################################################## |
9)colorama
既然你為日誌設定了很好的進度條,何不讓它們變得多彩起來!而且還可以當事情出現嚴重錯誤的時候還可以提醒自己。
colorama超級易於使用。只要彈出到你的指令碼,新增任何你想要變色的文字即可:
10)uuid
在我的想法中,我們在程式設計的時候其實真正只需要幾個工具就可以了:hashing、鍵/值儲存以及全域性惟一識別符號(universally unique ids,uuid)。 uuid內建於Python的UUID庫。它實現了版本1、3、4和5的UUID標準,對於比如說保證唯一性等工作,非常方便。
這聽起來很傻,但如果你要搞一個營銷活動或電子郵件投遞的記錄,並且要確保每個人都有自己的促銷程式碼或身份證號碼的時候呢?
如果你擔心用完id,哈哈,那你完全多慮了!UUID可以生成的數量相當於宇宙中原子的數目。
import uuid print uuid.uuid4() # e7bafa3d-274e-4b0a-b9cc-d898957b4b61
滄海一粟的uuid
11)bashplotlib
最後這個就讓我厚著臉皮介紹吧——bashplotlib是我的作品之一。它可以讓你繪製使用標準輸入的直方圖和散點圖。因此,儘管你可能不會讓它取代ggplot或matplotlib作為日常的繪相簿,但是它非常的新穎。最起碼,可以把它作為美化日誌的一個方式。
$ pip install bashplotlib $ scatter --file data/texas.txt --pch x
希望這些Python庫能對你的開發有所幫助!
譯文連結:http://www.codeceo.com/article/11-python-libs-you-not-know.html
英文原文:11 Python Libraries You Might Not Know
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 你可能不知道的pythonPython
- 20個你(可能)不知道的Git命令Git
- Vue你可能不知道的7個技巧Vue
- 你可能不知道的30個Python語言的特點技巧Python
- 你可能不知道的30個Python語言的特點技巧(3)Python
- 你可能不知道的30個Python語言的特點技巧(2)Python
- 你可能不知道的30個Python語言的特點技巧(1)Python
- 10個你可能不知道的前端PS技巧前端
- 你可能不知道的7個CSS單位CSS
- 8 個你可能不知道的 Docker 知識Docker
- 你可能不知道的JSJS
- 你(可能)不知道的web apiWebAPI
- 你可能不知道的htmlHTML
- 14 個你可能不知道的 JavaScript 除錯技巧JavaScript除錯
- 新年新技巧:你可能不知道的Python技巧Python
- 你可能不知道的小程式
- 你可能不知道的React用法?React
- 10 個你可能不知道的 Android Studio 技巧Android
- 分享 10 個你可能不知道的 Laravel Eloquent 小技巧Laravel
- 關於 Google 你可能還不知道的26個事實Go
- 你可能不知道的三個伺服器安全工具伺服器
- 你可能不知道的 10 個 Laravel Eloquent 的隱藏特性Laravel
- 你從不知道的 11 個 KDE 應用
- 你可能不知道的 Laravel Eloquent 操作Laravel
- 你可能不知道的 Object.defineProperty()Object
- 你可能不知道的css-doodleCSS
- 那些你可能不知道的Web APIsWebAPI
- 你可能不知道的字串分割技巧字串
- 你可能不知道的絕對定位
- [你可能不知道的Vue]-scoped CssVueCSS
- 10 個你有可能不知道的Android Studio技巧Android
- 你可能不知道的5 個強大的HTML5 APIHTMLAPI
- 7個你可能不知道的蘋果Mac使用技巧 非常有用蘋果Mac
- Chrome DevTools 中你可能不知道的 9 個除錯技巧Chromedev除錯
- 你可能不知道的 CSS3 AnimationCSSS3
- 那些你可能不知道的 ZooKeeper 知識
- 你可能不知道的css內容塊CSS
- 你可能不知道的前端知識點前端