11個并不被常用但對開發(fā)非常有幫助的Python庫
近來,越來越多的數(shù)據(jù)科學(xué)家開始使用Python,我不由得想到,盡管他們從pandas、scikit-learn和numpy這些庫中得到了不少好處,但是他們也許錯過了一些也許較老但同樣有幫助的Python庫。
在這篇博文里,我將給大家推薦一些鮮為人知的庫。即便你是Python高手,也應(yīng)該看一看,其中的一到兩個庫可能是你從沒見過的。
1)Delores
Dolorean是一個很酷的日期/時間庫。除了名字好聽之外,也是一個我曾用過的最舒心的日期/時間修改庫。它有點像javascript的moment庫,每次我導(dǎo)入它的時候都會想笑。文檔也很棒,除了有技術(shù)指導(dǎo)外,他們還引用了《回到未來》的無數(shù)內(nèi)容(來豐富文檔)。
from delorean import Delorean EST = "US/Eastern" d = Delorean(timezone=EST)
這個包被放到了GoogleCode上,所以你可能沒聽說過。GoogleCode現(xiàn)在就像西伯利亞一樣荒涼。
盡管它被流放到了一個冰天雪地、荒無人煙的地方,prettytable仍舊是最棒的結(jié)構(gòu)化輸出的庫,它能在終端或瀏覽器里構(gòu)建良好的輸出。因此,如果你正在用 IPython Notebook的新插件,建議你用prettytable來代替__repr__進(jìn)行HTML輸出。
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 | +----------------------+----------+
我當(dāng)初裝snowballstemmer,是因為我覺得這個名字很酷炫。但它的確是一個小巧好使的包。snowballstemmer通過porter stemmer算法來提取15種語言的單詞詞干。
from snowballstemmer import EnglishStemmer, SpanishStemmer
EnglishStemmer().stemWord("Gregory")
# Gregori
SpanishStemmer().stemWord("amarillo")
# amarill
4)wget
還記得你每次都為特定的目標(biāo)寫web爬蟲么?以后我們可以用其他辦法來完成了,那就是wget.想要以遞歸的方式下載所有頁面?想要抓取頁面上的每張圖?想要避免cookie追蹤?wget可以給你想要的一切。
馬克·扎格伯格的電影里它自己都說
從柯克蘭(寢室名)開始,這里的一切公共目錄都是公開的,還允許在Apache系統(tǒng)里插入目錄。所以用個wget就能下載柯克蘭全部的照片庫里的圖片了。易如反掌!
這個頁面有你想問的關(guān)于這個庫的一切問題,而且它很易用。
import wget wget.download("<a ) # 100% [............................................................................] 280385 / 280385
linux和osx的用戶還會用到另一個選項:from sh import wget。不過Python wget模塊還有更好的參數(shù)處理。
5)PyMC
我不記得是怎么得到PyMC包的了。scikit-learn似乎是所有人的寵兒(它應(yīng)得的,它太出色了),但是依我看來,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主要用來做貝葉斯定理分析。它的特點在Cam Davidson-Pilon的Bayesian Methods for Hackers里著重介紹過,它在許多流行的數(shù)據(jù)科學(xué)/python博客上也是一顆閃耀的鉆石,但是它從來沒得到過像它的同類scikit-learn一樣的狂熱追捧。
6)sh
我不能在你還不知道sh庫的情況下,就讓你離開。sh用來將shell命令導(dǎo)入到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
這是我用過的能排在前十里的最簡單的庫。(如果你有2、3分鐘,你可以讀一下這個資源),fuzzywuzzy 是一個字符串模糊匹配的庫,它由SeatGeek上的開發(fā)者建立。
fuzzywuzzy實現(xiàn)了字符串的相似率,令牌比和許多其他的匹配模式。它也可以用來創(chuàng)建特征向量或者匹配不同數(shù)據(jù)庫的記錄。
from fuzzywuzzy import fuzz fuzz.ratio("Hit me with your best shot", "Hit me with your pet shark") # 85
在你調(diào)用__main__循環(huán)的時候,你用過print "still going...” 這樣的提示么?你知道么,這樣會感覺特別low。想要找東西替代它么?為什么不用progressbar來提升你游戲的檔次呢?
如你所想,progressbar在針對精確數(shù)據(jù)的時候效果很好,它提供了一個文本模式的progressbar。但即便是一個變動的不精確數(shù)據(jù),使用它也比用那些很長的腳本好。
唉,這又是一個GoogleCode的犧牲品,它沒有受到太多關(guān)注(文檔有兩個空格的縮進(jìn))。用pip install可以安裝它。
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
在你用progressbar打印日志時,為什么不給它們加上顏色呢!實際上,當(dāng)出現(xiàn)重大錯誤時,它能很快的給你提醒。
colorama很容易使用。只要把它寫進(jìn)你的腳本,添加到想要打印的文本之前:
colorama-red
10)uuid
對于我來說,編程中真正需要的工具只有那么幾個:哈希,鍵值對存儲,和通用唯一標(biāo)識符。uuid就是Python的一個UUID包。它實現(xiàn)了UUID standards標(biāo)準(zhǔn)的1,3,4,5版本。在確保唯一性上真的很方便。
這聽起來可能會有點傻,但你有多少次想要給市場營銷的(銷售貨物)加上唯一的促銷代碼?或著給e-mail收件人加上唯一的id號?
如果你擔(dān)心耗盡ids,完全不用!UUID的可以生成原子數(shù)據(jù)。
import uuid print uuid.uuid4() # e7bafa3d-274e-4b0a-b9cc-d898957b4b61
如果你是UUID,你可能會這么想~~~~~
11)bashplotlib
不要臉的毛遂自薦一下,bashplotlib是我創(chuàng)建的一個庫。它通過標(biāo)準(zhǔn)輸入繪制出柱狀圖和散點圖。當(dāng)然,你不需要考慮用它來替代ggplot或matplotlib來作為你每天繪圖的包,只要作為新奇玩意試試就好。但至少,你可以使用它把你的日志文件弄的好看點。
$ pip install bashplotlib $ scatter --file data/texas.txt --pch x
相關(guān)文章
Python實現(xiàn)哲學(xué)家就餐問題實例代碼
這篇文章主要給大家介紹了關(guān)于Python實現(xiàn)哲學(xué)家就餐問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11解決nohup執(zhí)行python程序log文件寫入不及時的問題
今天小編就為大家分享一篇解決nohup執(zhí)行python程序log文件寫入不及時的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01python翻譯軟件實現(xiàn)代碼(使用google api完成)
這篇文章主要介紹了python結(jié)合google api完成的翻譯軟件實現(xiàn)代碼,大家參考使用2013-11-11圖解Python中淺拷貝copy()和深拷貝deepcopy()的區(qū)別
這篇文章主要介紹了Python中淺拷貝copy()和深拷貝deepcopy()的區(qū)別,淺拷貝和深拷貝想必大家在學(xué)習(xí)中遇到很多次,這也是面試中常常被問到的問題,本文就帶你詳細(xì)了解一下2023-05-05Python一直報錯SyntaxError:invalid?syntax的解決辦法
SyntaxError: invalid syntax 這個報錯經(jīng)常遇見,但是總感覺自己的代碼沒有問題,根據(jù)報錯提示的行也找不到錯誤,這些情況以及解決方法都有哪些呢?這篇文章主要給大家介紹了關(guān)于Python一直報錯SyntaxError:invalid?syntax的解決辦法,需要的朋友可以參考下2022-09-09