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 翻译作者:码农网 – 小峰

1、回复“数据分析师”查看数据分析师系列文章

2、回复“案例”查看大数据案例系列文章

3、回复“征信”查看相关征信的系列文章

4、回复“可视化”查看可视化专题系列文章

5、回复“SPPS”查看SPSS系列文章

6、回复“答案”查看hadoop面试题题目及答案

7、回复“爱情”查看大数据与爱情的故事

8、回复“笑话”查看大数据系列笑话

9、回复“大数据1、大数据2、大数据3、大数据4”查看大数据历史机遇连载

PPV课大数据ID: ppvke123 (长按可复制)

大数据人才的摇篮!专注大数据行业人才的培养。每日一课,大数据(EXCEL、SAS、SPSS、Hadoop、CDA)视频课程。大数据资讯,每日分享!数据咖—PPV课数据爱好者俱乐部!

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2015-09-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

jAVA发展历程

1991 绿色计划 (Green Project) 1991年1月 一个名为“Green Project”的项目启动。该项旨在为家用电器提供支持,使这些电器智能...

40411
来自专栏coding

写下这行代码时,只有我和上帝知道是怎么回事01.烂代码的路径依赖02.对于烂代码应采取零容忍03.代码规范的重要性04.文档的重要性

"算了,这里的代码有说不清的玄机,重构相当于在给自己挖更大的坑,还是按照原来的写法吧..."

793
来自专栏玉树芝兰

密码怎么设才好?一条标准就够了

又看到网络安全事件的新闻了吧?心慌不慌?其实设置和保管好自己的密码,只需要记住这一条标准就可以了。

985
来自专栏牛客网

51信用卡 二面问题

1420
来自专栏华章科技

图文大话编程语言史

所谓大话就是恶搞,本文中的关于各种编程语言的描述,你不可全信,也不能全信。作者在描述史实时加入了很多个人情感和社会流行元素,配图基本是靠谱的。这也许就是寓教于乐...

921
来自专栏ThoughtWorks

其实你早就学过响应式编程 | TW洞见

今日洞见 文章作者/图片 来自ThoughtWorks:佟达。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网...

34912
来自专栏java一日一条

我对“Hello World”30年的爱恨情仇

我最近在4月1日的那一周休了一个假,因此有时间来回顾我的职业生涯。令我震惊的是,我已经写了近30年的代码了!于是,我决定好好利用这段额外的休息时间来创作一篇怀旧...

461
来自专栏IT派

程序员那些牛逼闪闪的禁术,看到第二条我就忍不住哈哈哈哈哈哈哈哈

在和产品经理进行需求对峙时,一本正经地把不好/不想实现的功能通过玄学等方式口述出来,让产品经理当场懵逼,知难而退。

1470
来自专栏钱曙光的专栏

一周极客热文:200 行 C 代码编写你的第一个垃圾收集器

一名程序员在许多事物缠身,心里烦乱的情况下如何排解呢?Google Dart团队的一名工程师通过编写一个“垃圾收集器”来调整自己,而且起到了一个非常好的效果,但...

2019
来自专栏云计算

云计算,迷你版线程同步

昨天发了那个吹牛的文章,一不注意把今天推送文章的机会用掉了,所以我现在(PM 8:50)虽然已准备好,但也发不出来,抱歉,说好的今天发线程同步的内容只等到明天凌...

2136

扫码关注云+社区