关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » Python »11个你可能不知道的Python库

    11个你可能不知道的Python库

    2015-09-16 00:00:00 出处:阮一峰的网络日志
    分享

    现在有如此之多的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库能对你的开发有所帮助!

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。