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

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

首发:伯乐在线

译者:zer0Black

校稿人:Daetalus

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)
这个包被放到了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,你可能会这么想~~~~~
不要脸的毛遂自荐一下,bashplotlib 是我创建的一个库。它通过标准输入绘制出柱状图和散点图。当然,你不需要考虑用它来替代ggplot或matplotlib来作为你每天绘图的包,只要作为新奇玩意试试就好。但至少,你可以使用它把你的日志文件弄的好看点。
1
2
$ pip install bashplotlib
$ scatter --file data/texas.txt --pch x

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

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

    原文来自于:http://www.techug.com/11-python-libraries-you-might-not-know 目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它 ...

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

    目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从pandas,scikit- ...

  3. 精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  4. 你可能没听过的11个Python库

    目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单 PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从 pandas, scik ...

  5. Python学习教程(十)精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  6. 推荐11个实用Python库

    1.delorea 非常酷的日期/时间库 from delorean import Delorean EST = "US/Eastern"d = Delorean(timezone ...

  7. 为什么 要弄清楚 mysql int(5) int(11) bigint 自建mysql主键id python random 科学计数法

    场景: 有1.2亿条问答数据,相同问题的不同答案为不同条的数据,且该表数据逐日递增: 第三方需求(不合理): 将问题.答案数据分别放入问题表.答案表: 问题表的主键为整数,在答案表中,每行数据有相应的 ...

  8. VisualGDB系列11:Linux C++项目中使用外部Linux库

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...

  9. python和java哪个更值得学?Python会超越Java吗?

    Java快死了吗?当然不是.但是Python的普及率每年都在增长.每个都有自己的优点和缺点,并且两者都是值得了解的. 根据IT编程趋势,就工作数量,现有Java开发人员的数量以及IT中的总体使用情况而 ...

随机推荐

  1. 3ds max 渲染清晰面片的边缘

    3ds max的菜单栏 -> 渲染 -> 材质编辑器->精简材质编辑器,将面状打勾,如下图,就能渲染出面片清晰的图形.

  2. linux常用命令备忘

    scp使用非默认端口 scp -P port username@.....IP:/dir 要拷贝到的地方

  3. C#中常用的系统内置委托

    在公共语言运行时(CLR)环境中系统为我们内置了一些常用的委托,包括Action类的委托.Func类的委托.Predicate<T>委托.Comparison<T>委托等等.以 ...

  4. ExtJs基础知识总结:自定义弹窗和ComboBox自动联想加载(四)

    概述 Extjs弹窗可以分为消息弹窗.对话框,这些弹窗的方式ExtJs自带的Ext.Msg.alert就已经可以满足简单消息提示,但是相对复杂的提示,比如如何将Ext.grid.Panel的控件显示嵌 ...

  5. CozyRSS开发记录22-界面退化

    CozyRSS开发记录22-界面退化 1.问题1-HtmlTextBlock 找的这个HtmlTextBlock有很严重的bug,有时候显示不完全,有时候直接就崩了.然后看了下代码,完全是学生仔水平写 ...

  6. 简单谈谈NFC(转载自-tlex/pku_android)

    NFC是Near Field Communication缩写,又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据.这个技术由免接触式射 ...

  7. 4.View绘制分析笔记之onDraw

    上一篇文章我们了解了View的onLayout,那么今天我们来学习Android View绘制三部曲的最后一步,onDraw,绘制. ViewRootImpl#performDraw private ...

  8. 收集常用的.net开源项目

    Json.NET http://json.codeplex.com/ Json.NET是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Lin ...

  9. 什么是Angularjs

    AngularJs(后面就简称ng了)是一个用于设计动态web应用的结构框架.首先,它是一个框架,不是类库,是像EXT一样提供一整套方案用于设计web应用.它不仅仅是一个javascript框架,因为 ...

  10. iOS应用九宫格算法

      1.框框横向间隔为:( "界面的总宽度"-"界面每行的控件的宽度" * "每行要现实的列数(这里是3)") / ("列数 + ...