现在有如此之多的 Python 包, 几乎没有人能够全盘掌握 光是 PyPI 就可单独列出 47,000 个包!
近日, 听到很多数据科学家切换到 Python 的消息, 我不由地想到, 虽然他们得到了 pandasscikit-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 库它实现了版本 134 和 5 的 UUID 标准, 对于比如说保证唯一性等工作, 非常方便
这听起来很傻, 但如果你要搞一个营销活动或电子邮件投递的记录, 并且要确保每个人都有自己的促销代码或身份证号码的时候呢?
如果你担心用完 id, 哈哈, 那你完全多虑了! UUID 可以生成的数量相当于宇宙中原子的数目
- import uuid
- print uuid.uuid4()
- # e7bafa3d-274e-4b0a-b9cc-d898957b4b61
#11)bashplotlib
最后这个就让我厚着脸皮介绍吧 bashplotlib 是我的作品之一它可以让你绘制使用标准输入的直方图和散点图因此, 尽管你可能不会让它取代 ggplot 或 matplotlib 作为日常的绘图库, 但是它非常的新颖最起码, 可以把它作为美化日志的一个方式
- $ pip install bashplotlib
- $ scatter --file data/texas.txt --pch x
希望这些 Python 库能对你的开发有所帮助!
我有一个 Python 学习交流 QQ 群: 638121273 禁止闲聊, 非喜勿进
来源: http://geek.csdn.net/news/detail/253393