南京新闻 首页> 时尚> 正文

11个你可能不知道的Python库

2019-12-02 09:02:23
  

  英文原文:11 Python Libraries You Might Not Know

  现在有如此之多的 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
  翻译作者:码农网 – 小峰


更多精彩:
富德生命人寿 http://www.sino-life.com

南京日报社简介 | 关于我们 | 广告服务 | 网站建设

© CopyRight 2008-2010, Inc. All Rights Reserved.

南京日报社 版权所有,未经书面授权禁止使用

备案/许可证号:赣ICP备09014908号