Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >4个神奇的python库,数据科学神器!(附代码演练)

4个神奇的python库,数据科学神器!(附代码演练)

作者头像
磐创AI
发布于 2023-08-29 00:25:18
发布于 2023-08-29 00:25:18
30400
代码可运行
举报
运行总次数:0
代码可运行

4个Python库将你的数据科学项目提升到一个新的水平

介绍

在本文中,我将分享4个鲜为人知的Python库,我觉得它们没有得到应有的关注度,这些库可以帮助你将Data Science项目提高到一个新的水平。让我们开始吧,介绍顺序是:

1.argh – 创建无缝的CLIs2.tqdm – 简单进度栏3.msgpack – 二进制JSON,快速而小型4.*Redis简单缓存 *– 用于存储

我在文章结尾提到了一个奖励库!一定要检查一下。现在开始吧!

1. argh

arghargparse的包装,使用起来非常简单。给定一些功能定义后,argh会自动为你创建一个命令行界面。

首先,我们安装argh。可以使用pip轻松安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install argh

让我们创建一个简单的虚拟函数以帮助更好地理解argh:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argh
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def do_the_thing(required_arg, optional_arg=1, other_optional_arg=False):    """    I am a docstring    """    print((required_arg, type(required_arg)))    print((optional_arg, type(optional_arg)))    print((other_optional_arg, type(other_optional_arg)))

首先,我们导入argh,然后开始创建函数。请注意,我们可以为函数使用docstring编写自定义文档,稍后我们也可以在命令行中访问它。

如我们所见,函数使用3个变量作为参数。第一个没有默认值,因此它将被解释为必需参数,第二个具有默认值,恰好是一个整数,argh将识别它,第三个相同,但这是一个bool,argh将以不同的方式处理它。

现在,我们要使此函数可供某人从命令行调用。为此,在应该运行脚本的地方,执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == '__main__':    argh.dispatch_command(do_the_thing)

就是这样!这就是为函数创建CLI所要做的全部。你可以更好地控制自己的功能。

argh*还 提供了一个称为@ args.arg*的装饰器 ,你可以使用该装饰器为特定参数指定选项。你可以为这些参数指定一个简写形式以及一些帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@argh.arg('--bool-arg-for-flag', '-b', help="Flip this flag for things")@argh.arg('arg_with_choices', choices=['one', 'two', 'three'])def do_the_other_thing(arg_with_choices, bool_arg_for_flag=False):    print(arg_with_choices)    print(bool_arg_for_flag)if __name__ == '__main__':    argh.dispatch_command(do_the_other_thing)

同样,有时命令行界面为你提供它们接受的选项列表,而不只是接受任何输入,这是非常好的。在上面的代码中,这是使用'choices'参数并为其提供值列表来完成的。

这是它的创建者提供的argh模块的摘要,简要概述了它。

你可以在 此处https://pypi.org/project/argh 查看官方文档和许多深入的教程。

2. tqdm

这是我的goto进度栏生成器。它非常易于使用,你可以嵌套循环,也可以轻松自定义进度条。在模块tqdm中,你最需要的2个最有用的功能是“ tqdm”和“ trange ”。现在,让我们开始探索这个很棒的软件包。安装tqdm:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install ipywidgets jupyter nbextension enable --py widgetsnbextensionjupyter labextension install @jupyter-widgets/jupyterlab-manager

通过执行此操作,可以激活JupyterLabs的ipywidgets插件。

之后,添加此单元格以在notebook中激活tqdm:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%%capturefrom tqdm import tqdm_notebook as tqdmtqdm().pandas()

有趣的事实:tqdm源自阿拉伯语taqaddum (تقدّم),意为“进步”,是西班牙语中的“我非常爱你”的缩写(te quiero demasiado )。

函数接受一个iterable,并在Python开始遍历它时生成一个进度条。下面是一个简单的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from tqdm import tqdmimport timeL = list(range(10000))for ele in tqdm(L):    time.sleep(0.2)

现在,trange()是 tqdm(range(x)) 的一个不错的选择另外,你可以为嵌套循环创建多个进度条:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in trange(10):    for j in trange(10, desc="inner_loop"):        time.sleep(0.01)

一些有用的参数及其语法:

a)desc –用于指定创建的进度条的描述。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tqdm (self, iterable, desc= “Your description”)

b)total–用于指定预期的迭代次数(如果尚未指定或需要修改)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tqdm (self, iterable, total= 500)

c)ncols –用于指定生成的进度条的宽度。如果未指定,则在窗口中保持动态。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tqdm (self, iterable, ncols= 50)

d)miniinterval – 用于更改最小进度显示更新。默认值为1/10秒。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tqdm (self, iterable, mininterval=3)

e)ascii – ASCII字符可用于填充进度栏。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tqdm ( self, iterable, ascii= “123456789$”, desc=”Your description” )

3. msgpack

这只是称为MessagePack的序列化协议的Python客户端。

msgpack(https://msgpack.org/index.html)本质上就是JSON的二进制版本。它使你可以非常轻松地对数据进行序列化和反序列化,然后将其保存到字节数组或文件中。

几乎所有其他语言都具有MessagePack的实现,因此它具有与JSON文件相同的可移植性。

但是,由于msgpack将数据以二进制格式保存,因此你可以节省很多空间,尤其是当这些数据需要通过网络传输时。

这是MessagePack模块的正式说明:

你可以使用以下方法安装软件包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install msgpack

现在让我们继续举例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import msgpackimport jsonimport random
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def msgpack_example():    example_dict = {i: random.random() for i in range(10000)}    with open('json_file.json', 'w') as f:        json.dump(example_dict, f)    with open('json_file.json') as f:        back_from_json = json.load(f)    # Saving and loading    with open('msgpack_file.msgpack', 'wb') as f:        f.write(msgpack.packb(example_dict))    with open('msgpack_file.msgpack', 'rb') as f:        back_from_msgpack = msgpack.unpackb(f.read())

我们在这里基本上要做的是创建一个浮点值字典,然后将其转储到JSON中并重新加载,还将其转储到MessagePack文件中并重新加载。

由于MessagePack为二进制格式,因此在打开它时,必须使用二进制格式“ b”。因此,你可以看到,使用msgpack真的很容易。我想指出的另一件事是关于文件的数据完整性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Data integrityprint(type(next(iter(back_from_json.keys()))))print(type(next(iter(back_from_msgpack.keys()))))

因此,输出为JSON的<class'str'>和MessagePack的<class'int'>。

我们知道JSON要求你具有字符串键,即使我们的原始数据在字典中具有整数键,JSON也会将其强制转换为字符串。而MessagePack维护数据的完整性并将其保持为整数类型。

我个人在使用JSON时曾多次遇到微妙的问题,而这甚至不算是一个问题。

其次,如果我们查看保存的文件,则JSON文件为275kb,消息包为117kb。现在这似乎还不是很多,但是当你使用越来越多的大型数据集并涉及网络时,这些空间上的节省就变得非常重要。

4. Redis简单缓存

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip3 install git+https://github.com/YashSinha1996/redis-simple-cache.git

对于那些不熟悉Redis的人来说,这是一个内存中的键值存储,其数据访问延迟非常低。

顾名思义,redis_cache确实使用Redis进行缓存。要使用redis_cache,有两个装饰器- @cache_it*和@cache_it_json*。

两者之间的唯一区别是cache_it使用pickle序列化数据,cache_it_json不使用pickle,而是使用JSON。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import timefrom redis_cache import cache_it, cache_it_json
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@cache_it(limit=1000, expire=5)def function_that_takes_a_long_time(i):    print(f"function was called with input {i}")    return i**2if __name__ == '__main__':    for i in range(10):        print(i, function_that_takes_a_long_time(2))

这是一个虚拟函数,可以帮助可视化需要很长时间才能执行的函数,然后运行一个循环将其调用10次。

使用@cache_it装饰器,并带有参数限制 ,在这种情况下,这意味着将仅缓存1000个唯一输入值。然后,如果使用更多不同的输入值调用该函数,则旧的输入值将开始被推送,而新的输入值将开始被添加。

在这种情况下,expire参数表示缓存超过5秒的所有内容都会被自动删除。

当你使用数据库并提取大量数据时,此模块最有用。这有助于防止数据过时。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
(数据科学学习手札53)Python中tqdm模块的用法
  tqdm是Python中专门用于进度条美化的模块,通过在非while的循环体内嵌入tqdm,可以得到一个能更好展现程序运行过程的提示进度条,本文就将针对tqdm的基本用法进行介绍。
Feffery
2019/03/05
2K0
python进度条显示-tqmd模块
安装 anaconda 是自动集成的 如果导入不存在,直接pip pip install tqdm 参数 #参数介绍 iterable=None, desc=None, 传入str类型,作为进度条标题(类似于说明) total=None, 预期的迭代次数 leave=True, file=None, ncols=None, 可以自定义进度条的总长度 mininterval=0.1, 最小的更新间隔 maxinterval=10.0, 最大更新间隔 miniters=None,
诡途
2020/10/16
1.7K0
python进度条显示-tqmd模块
Python爬虫有用的库:tqdm
练习爬虫的小伙伴,在爬取数据比较多的时候,有时候等候的时间比较久一点,因为不知道具体的进度,可能会感到一丝丝无聊
远方的星
2021/08/11
9110
Python爬虫有用的库:tqdm
(数据科学学习手札91)在Python中妥善使用进度条
在日常运行程序的过程中常常涉及到循环迭代过程,对于执行时间很短的程序来说倒无所谓,但对于运行过程有明显耗时的涉及循环迭代的程序,为其加上进度条(progress bar),是帮助我们监测代码执行进度以及处理中间异常错误非常实用的技巧。
Feffery
2020/08/02
1.7K0
30个数据科学工作中必备的Python包!
来源丨数据STUDIO 在本文中,云朵君将介绍一些非常独特的并且好用的 Python 包,它们可以在许多方面帮助你构建数据的工作流。 Python 可以说是最容易入门的编程语言,在numpy,scipy等基础包的帮助下,对于数据的处理和机器学习来说Python可以说是目前最好的语言,在各位大佬和热心贡献者的帮助下Python拥有一个庞大的社区支持技术发展,开发两个各种 Python 包来帮助数据人员的工作。 1、Knockknock Knockknock是一个简单的Python包,它会在机器学习模型训练结束
张俊红
2022/08/26
1.3K0
30个数据科学工作中必备的Python包!
为你的命令行工具添加牛逼哄哄的进度条
•自己使用time和sys模块结合循环实现•PyPrind[1] 526 star, 许久不更新了•python-progressbar[2] 353 star, 许久不更新了•progress[3] 850 star, 最后一次更新12个月前•tqdm[4] 14.8k star, 截止写文档还在更新•alive_progress[5] 610 star, 持续更新中•rich[6] 7k star, 持续更新中•rich并不单单局限于进度条,这是一个功能强大的命令行辅助,官方介绍: Rich is a Python library for rich text and beautiful formatting in the terminal•click_spinner[7] 157 star, 3个月前最后一次更新
追马
2020/07/03
1.5K0
【RAG】知识库搭建-文档预处理-数据清洗:基于异步的AI文本批处理系统实践
在构建企业级知识库和RAG(检索增强生成)系统时,文档预处理和数据清洗是至关重要的环节。原始文档往往存在格式不统一、内容冗余、质量参差不齐等问题,这些问题会直接影响到向量数据库的检索质量和后续AI模型的表现。为了解决这个问题,我开发了一个基于Python的异步文本批处理系统。通过这个系统的处理,我们可以显著提升知识库的质量,为后续的向量检索和AI应用打下坚实的基础。
訾博ZiBo
2025/03/26
1740
(数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
*从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes
Feffery
2019/09/06
5.1K0
(数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
python的Tqdm模块
Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。
狼啸风云
2019/09/19
4.5K0
最近发现的4个Python命令行可视化库,太酷了!
分别是Bashplotlib、tqdm、PrettyTable、Colorama。
小F
2021/06/25
1.1K0
最近发现的4个Python命令行可视化库,太酷了!
python实现进度条功能
最近需要用python写一个小脚本"实现进度条功能",用到了一些小知识,赶紧抽空记录一下。不深但是常用。
测试加
2022/06/21
1.4K0
python实现进度条功能
Python - 进度条神器 tqdm 用法
程序运行过程中进度条显示特别重要,Python中使用tqdm库作为进度条操作工具,本文简要介绍tqdm常用功能。 背景 tqdm源自阿拉伯语 taqaddum,意思是进程( “progress”); 也是西班牙语中 “I love you so much” (te quiero demasiado)的缩写(这个是碰了巧了) 该模块的作用就是通过装饰tqdm(iterable)任何可迭代的对象,使代码中的循环(loop)在运行过程中为用户展示进度条。 盗了官网的图直观展示一下效果 准备工作
为为为什么
2022/08/04
2.1K0
Python - 进度条神器 tqdm 用法
给Python代码加上酷炫进度条的几种姿势
大家好,在下载某些文件的时候你一定会不时盯着进度条,在写代码的时候使用进度条可以便捷的观察任务处理情况,除了使用print来打印之外,今天本文就介绍几种给你的Python代码加上酷炫的进度条的方式。
刘早起
2020/06/04
9560
最近发现的4个Python命令行可视化库,太酷了!
分别是Bashplotlib、tqdm、PrettyTable、Colorama。
码农向前冲
2022/01/12
7010
最近发现的4个Python命令行可视化库,太酷了!
情人节限定!教你如何用Python拼接女神的照片~
前段时间准备情人节礼物,想到了能不能用过去所有的照片作为像素点,合成为一张合照。但是,我也没有处理这方面问题的经验,于是上网查找,果然找到了一个相关的代码(原网址实在找不到了,就不贴了)。花了一晚上的时间研究学习,最终实现了合成照片的功能,并学习了很多以前没有接触过的Python库,加以记录。
Here_SDUT
2022/09/19
9260
情人节限定!教你如何用Python拼接女神的照片~
msgpack,fmtlib和RPClib库的介绍及使用
MsgPack 是一种高效的二进制序列化格式。官方对msgpack地道的介绍:——It's like JSON,but fast and small.
杨永贞
2022/05/13
1.8K0
msgpack,fmtlib和RPClib库的介绍及使用
python 三方库:tqdm实现进度条
在开发的过程中,我们总会遇到这样的,去实现进度条展示,那么如何来实现进度条呢,其实有一个模块已经给我们完成了--tqdm
雷子
2023/09/11
5410
python 三方库:tqdm实现进度条
Python tqdm显示代码任务进度
有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。
用户9925864
2022/07/27
2K0
Python tqdm显示代码任务进度
使用click创建完美的Python命令行程序
让我们将这些规则应用于一个具体的案例:一个使用Caesar cipher加密和解密消息的脚本。
用户8949263
2022/11/07
1.1K0
使用click创建完美的Python命令行程序
Python 奇思淫技
这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。
小草AI
2019/08/20
7920
Python 奇思淫技
推荐阅读
相关推荐
(数据科学学习手札53)Python中tqdm模块的用法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验