近来,越来越多的数据科学家开始使用Python,我不由得想到,尽管他们从pandas、scikit-learn和numpy这些库中得到了不少好处,但是他们也许错过了一些也许较老但同样有帮助的Python库。
在这篇博文里,我将给大家推荐一些鲜为人知的库。即便你是Python高手,也应该看一看,其中的一到两个库可能是你从没见过的。
Dolorean是一个很酷的日期/时间库。除了名字好听之外,也是一个我曾用过的最舒心的日期/时间修改库。它有点像javascript的moment
库,每次我导入它的时候都会想笑。文档也很棒,除了有技术指导外,他们还引用了《回到未来》的无数内容(来丰富文档)。
123 | from delorean import DeloreanEST = \”US/Eastern\”d = Delorean(timezone=EST) |
这个包被放到了GoogleCode上,所以你可能没听说过。GoogleCode现在就像西伯利亚一样荒凉。
尽管它被流放到了一个冰天雪地、荒无人烟的地方,prettytable
仍旧是最棒的结构化输出的库,它能在终端或浏览器里构建良好的输出。因此,如果你正在用 IPython Notebook的新插件,建议你用prettytable
来代替__repr__
进行HTML输出。
12345678910111213141516171819202122 | from prettytable import PrettyTabletable = 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 |+———————————+—————+ |
我当初装snowballstemmer
,是因为我觉得这个名字很酷炫。但它的确是一个小巧好使的包。snowballstemmer
通过porter stemmer算法来提取15种语言的单词词干。
12345 | from snowballstemmer import EnglishStemmer, SpanishStemmerEnglishStemmer().stemWord(\”Gregory\”)# GregoriSpanishStemmer().stemWord(\”amarillo\”)# amarill |
还记得你每次都为特定的目标写web爬虫么?以后我们可以用其他办法来完成了,那就是wget
.想要以递归的方式下载所有页面?想要抓取页面上的每张图?想要避免cookie追踪?wget
可以给你想要的一切。
马克·扎格伯格的电影里它自己都说
从柯克兰(寝室名)开始,这里的一切公共目录都是公开的,还允许在Apache系统里插入目录。所以用个wget就能下载柯克兰全部的照片库里的图片了。易如反掌!
这个页面有你想问的关于这个库的一切问题,而且它很易用。
123 | import wgetwget.download(\”http://www.cnn.com/\”>http://www.cnn.com/\”)# 100% [………………………………………………………………….] 280385 / 280385 |
linux和osx的用户还会用到另一个选项:from sh import wget
。不过Python wget模块还有更好的参数处理。
我不记得是怎么得到PyMC
包的了。scikit-learn
似乎是所有人的宠儿(它应得的,它太出色了),但是依我看来,PyMC更有魅力。
12345 | from pymc.examples import disaster_modelfrom pymc import MCMCM = 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里着重介绍过,它在许多流行的数据科学/python博客上也是一颗闪耀的钻石,但是它从来没得到过像它的同类scikit-learn
一样的狂热追捧。
我不能在你还不知道sh
库的情况下,就让你离开。sh
用来将shell命令导入到Python中。在bash它超有用,但在Python里你可能就不住怎么使用(即递归搜索文件)。
1234567 | from sh import findfind(\”/tmp\”)/tmp/foo/tmp/foo/file1.json/tmp/foo/file2.json/tmp/foo/file3.json/tmp/foo/bar/file3.json |
这是我用过的能排在前十里的最简单的库。(如果你有2、3分钟,你可以读一下这个资源),fuzzywuzzy
是一个字符串模糊匹配的库,它由SeatGeek上的开发者建立。
fuzzywuzzy
实现了字符串的相似率,令牌比和许多其他的匹配模式。它也可以用来创建特征向量或者匹配不同数据库的记录。
123 | from fuzzywuzzy import fuzzfuzz.ratio(\”Hit me with your best shot\”, \”Hit me with your pet shark\”)# 85 |
在你调用__main__
循环的时候,你用过print \"still going...”
这样的提示么?你知道么,这样会感觉特别low。想要找东西替代它么?为什么不用progressbar
来提升你游戏的档次呢?
如你所想,progressbar
在针对精确数据的时候效果很好,它提供了一个文本模式的progressbar。但即便是一个变动的不精确数据,使用它也比用那些很长的脚本好。
唉,这又是一个GoogleCode的牺牲品,它没有受到太多关注(文档有两个空格的缩进)。用pip install
可以安装它。
12345678 | from progressbar import ProgressBarimport timepbar = ProgressBar(maxval=10)for i in range(1, 11): pbar.update(i) time.sleep(1)pbar.finish()# 60% |######################################################## | |
在你用progressbar打印日志时,为什么不给它们加上颜色呢!实际上,当出现重大错误时,它能很快的给你提醒。
colorama
很容易使用。只要把它写进你的脚本,添加到想要打印的文本之前:
对于我来说,编程中真正需要的工具只有那么几个:哈希,键值对存储,和通用唯一标识符。uuid
就是Python的一个UUID包。它实现了UUID standards标准的1,3,4,5版本。在确保唯一性上真的很方便。
这听起来可能会有点傻,但你有多少次想要给市场营销的(销售货物)加上唯一的促销代码?或着给e-mail收件人加上唯一的id号?
如果你担心耗尽ids,完全不用!UUID的可以生成原子数据。
123 | import uuidprint uuid.uuid4()# e7bafa3d-274e-4b0a-b9cc-d898957b4b61 |
如果你是UUID,你可能会这么想~~~~~
不要脸的毛遂自荐一下,bashplotlib
是我创建的一个库。它通过标准输入绘制出柱状图和散点图。当然,你不需要考虑用它来替代ggplot或matplotlib来作为你每天绘图的包,只要作为新奇玩意试试就好。但至少,你可以使用它把你的日志文件弄的好看点。
12 | $ pip install bashplotlib$ scatter —file data/texas.txt —pch x |
上一篇:Y分钟学会Python