11个并不广为人知,但值得了解的Python库

这是一篇译文,文中提及了一些不常见但是有用的Python库

原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-know.html

Python的库多如牛毛。再见多识广的人也无法知晓全部。光PyPi的网站上就列出了超过47000个Python库。

本文由博客园zer0black撰写/翻译,未经允许,禁止转载

近来,越来越多的数据科学家开始使用Python,我不由得想到,尽管他们从pandasscikit-learn和 numpy 这些库中得到了不少好处,但是他们也许错过了一些也许较老但同样有帮助的Python库。

在这篇博客里,我将给大家推荐一些鲜为人知的库。即便你是Python高手,也应该看一看,其中的一到两个库可能是你从没见过的。

1) Delores

本文由博客园zer0black撰写/翻译,未经允许,禁止转载

Dolorean 是一个很酷的日期/时间库。除了名字好听之外,也是一个我曾用过的最舒心的日期/时间修改库。它有点像javascript的moment 库,每次我导入它的时候都会想笑。文档也很棒,除了有技术指导外,他们还引用了《回到未来》的无数内容(来丰富文档)。


1

2

3

from delorean import Delorean

EST = "US/Eastern"

= Delorean(timezone=EST)

2) prettytable

这个包被放到了GoogleCode上,所以你可能没听说过。GoogleCode现在就像西伯利亚一样荒凉。

尽管它被流放到了一个冰天雪地、荒无人烟的地方,prettytable 仍旧是最棒的结构化输出的库,它能在终端或浏览器里构建良好的输出。因此,如果你正在用 IPython Notebook的新插件,建议你用prettytable 来代替__repr__进行HTML输出。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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 通过porter stemmer算法来提取15种语言的单词词干。


1

2

3

4

5

from snowballstemmer import EnglishStemmer, SpanishStemmer

EnglishStemmer().stemWord("Gregory")

# Gregori

SpanishStemmer().stemWord("amarillo")

# amarill

4) wget

还记得你每次都为特定的目标写web爬虫么?以后我们可以用其他办法来完成了,那就是 wget.想要以递归的方式下载所有页面?想要抓取页面上的每张图?想要避免cookie追踪?wget可以给你想要的一切。

马克·扎格伯格的电影里它自己都说

从柯克兰(寝室名)开始,这里的一切公共目录都是公开的,还允许在Apache系统里插入目录。所以用个wget就能下载柯克兰全部的照片库里的图片了。易如反掌!

这个页面有你想问的关于这个库的一切问题,而且它很易用。


1

2

3

import wget

wget.download("<a href="http://www.cnn.com/">http://www.cnn.com/</a>")

# 100% [............................................................................] 280385 / 280385

linux和osx的用户还会用到另一个选项:from sh import wget。不过Python wget模块还有更好的参数处理。

5) PyMC

我不记得是怎么得到PyMC 包的了。scikit-learn 似乎是所有人的宠儿(它应得的,它太出色了),但是依我看来,PyMC更有魅力。


1

2

3

4

5

from pymc.examples import disaster_model

from pymc import MCMC

= 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一样的狂热追捧。

6) sh

我不能在你还不知道 sh库的情况下,就让你离开。 sh用来将shell命令导入到Python中。在bash它超有用,但在Python里你可能就不住怎么使用(即递归搜索文件)。


1

2

3

4

5

6

7

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

这是我用过的能排在前十里的最简单的库。(如果你有2、3分钟,你可以读一下这个资源),fuzzywuzzy 是一个字符串模糊匹配的库,它由SeatGeek上的开发者建立。

fuzzywuzzy 实现了字符串的相似率,令牌比和许多其他的匹配模式。它也可以用来创建特征向量或者匹配不同数据库的记录。


1

2

3

from fuzzywuzzy import fuzz

fuzz.ratio("Hit me with your best shot""Hit me with your pet shark")

# 85

8) progressbar

在你调用__main__循环的时候,你用过print "still going...” 这样的提示么?你知道么,这样会感觉特别low。想要找东西替代它么?为什么不用progressbar来提升你游戏的档次呢?

如你所想,progressbar 在针对精确数据的时候效果很好,它提供了一个文本模式的progressbar。但即便是一个变动的不精确数据,使用它也比用那些很长的脚本好。

本文由博客园zer0black撰写/翻译,未经允许,禁止转载

唉,这又是一个GoogleCode的牺牲品,它没有受到太多关注(文档有两个空格的缩进)。用pip install可以安装它。


1

2

3

4

5

6

7

8

from progressbar import ProgressBar

import time

pbar = ProgressBar(maxval=10)

for in range(111):

    pbar.update(i)

    time.sleep(1)

pbar.finish()

# 60% |########################################################                                      |

9) colorama

在你用progressbar打印日志时,为什么不给它们加上颜色呢!实际上,当出现重大错误时,它能很快的给你提醒。

colorama 很容易使用。只要把它写进你的脚本,添加到想要打印的文本之前:

10) uuid

对于我来说,编程中真正需要的工具只有那么几个:哈希,键值对存储,和通用唯一标识符。uuid 就是Python的一个UUID包。它实现了UUID standards 标准的1,3,4,5版本。在确保唯一性上真的很方便。

这听起来可能会有点傻,但你有多少次想要给市场营销的(销售货物)加上唯一的促销代码?或着给e-mail收件人加上唯一的id号?

如果你担心耗尽ids,完全不用!UUID的可以生成原子数据。


1

2

3

import uuid

print uuid.uuid4()

# e7bafa3d-274e-4b0a-b9cc-d898957b4b61

如果你是UUID,你可能会这么想~~~~~

11) bashplotlib

不要脸的毛遂自荐一下,bashplotlib 是我创建的一个库。它通过标准输入绘制出柱状图和散点图。当然,你不需要考虑用它来替代ggplot或matplotlib来作为你每天绘图的包,只要作为新奇玩意试试就好。但至少,你可以使用它把你的日志文件弄的好看点。


1

2

$ pip install bashplotlib

$ scatter --file data/texas.txt --pch x

时间: 2024-10-03 04:10:05

11个并不广为人知,但值得了解的Python库的相关文章

你可能没听过的11个Python库

目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单PyPi上就有超过47000个包列表.现在,越来越多的数据科学家 开始使用Python,虽然他们从pandas,scikit-learn,numpy中获得了不少好处,但我仍想向他们介绍一些年长且非常实用的 Python库.在本文中,我将列一些不太知名的库,即使你是经验丰富的Python的开发者,也值得过来一看. 1.delorean Dolorean是一个非常酷的日期/时间库.类似JavaScript的moment,拥有非

11个实用但你可能不知道的Python程序库

目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从pandas,scikit-learn,numpy中获得了不少好处,但我仍想向他们介绍一些年长且非常实用的Python库.在本文中,我将列一些不太知名的库,即使你是经验丰富的Python的开发者,也值得过来一看. 1) delorean Dolorean是一个非常酷的日期/时间库.类似JavaScript的moment,拥有非

转:11个实用但你可能不知道的Python程序库

原文来自于:http://www.techug.com/11-python-libraries-you-might-not-know 目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从pandas,scikit-learn,numpy中获得了不少好处,但我仍想向他们介绍一些年长且非常实用的Python库.在本文中,我将列一些不太知名的库,即使你是经验丰富的Python的开发者

推荐11个实用Python库

1.delorea 非常酷的日期/时间库 from delorean import Delorean EST = "US/Eastern"d = Delorean(timezone=EST) 2.prettytable 可以在浏览器或终端构建很不错的输出 from prettytable import PrettyTable table = PrettyTable(["animal", "ferocity"]) table.add_row([&q

阿里规范 - 六、工程结构 - (二)二方库依赖 - 11.【参考】为避免应用二方库的依赖冲突问题,二方库发布者应当遵循以下原则:

11.[参考]为避免应用二方库的依赖冲突问题,二方库发布者应当遵循以下原则: 1)精简可控原则.移除一切不必要的 API 和依赖,只包含 Service API.必要的领域模型对象.Utils 类.常量.枚举等.如果依赖其它二方库,尽量是 provided 引入,让二方库使用者去依赖具体版本号: 无 log 具体实现,只依赖日志框架. 2)稳定可追溯原则.每个版本的变化应该被记录,二方库由谁维护,源码在哪里,都需要能方便查到. 除非用户主动升级版本,否则公共二方库的行为不应该发生变化. 补充学习

值得学习的python项目

此网站整理的2014年值得一学的pytho项目,http://pycoders.com/2014/ 项目资源都在github上,python程序员进阶必备. 就当作2015年的计划吧.先列表,再对号 Projects 1. robobrowser A library for web scraping built on Requests and BeautifulSoup. Like Mechanize, but with tests, docs, and a Pythonic interface

LeetCode 11 Container With Most Water (C,C++,Java,Python)

Problem: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a

10个值得关注的python博客(转)

1.首先第一个肯定是毋庸置疑的Planet Python这是最出名的python博客其中之一,快去看看,我希望你能找到对你有用的东西,昨天它还更新了呢! http://planetpython.org/ 2.第二个博客是lucumr,博主是flask的创始人(一个python micro web framework) http://lucumr.pocoo.org/ 3.第三个博客是love-python,我不知道我是怎么被它吸引的,但是我真得很喜欢这个博客,它有很多有用的知识和代码 http:

java-工具-轮子

几乎每个程序员都知道要"避免重复发明轮子"的道理--尽可能使用那些优秀的第三方框架或库,但当真正进入开发时,我却经常发现他们有时并不知道那些轮子在哪里.最近,我在业余时间带几个年轻的程序员一起做了一个很小的商业项目,而在一起开发的过程中,我几乎在所有需要判断字符串是否为空的地方,看到了下面的代码: if(inputString == null || inputString.length == 0){......} 除了字符串判断是否为空之外,还有很多字符串处理或其他数据类型判断的方法,