2022年不可错过的10个顶级Python库
1。Ruff一个快速的linter
有没有人在2022年没有使用linter?
多年来,社区已经认识到linters是软件开发过程的重要组成部分。他们分析源代码中潜在的错误和样式问题,提供有价值的反馈和改进建议。最终,它们帮助开发人员编写更干净、更高效的代码。为了充分利用这个过程,拥有快速有效的linter非常重要。
Ruff是一个用Rust编写的非常快的Pythonlinter。它比现有的linters快10100倍,并且可以通过pip安装。
从头开始检查CPython代码库。
除了linting之外,Ruff还可以作为高级代码转换工具,能够升级类型注释、重写类定义、排序导入等等。
它是一个强大的工具,旨在取代各种其他工具,包括Flake8、isort、pydocstyle、yesqa、eradicate,甚至是pyupgrade和autoflake的子集,同时以闪电般的速度执行。
绝对是2023年加入你的武器库的一大亮点!2。pythonbenedict
字典是Python中重要的数据结构,但使用复杂的字典可能是一个挑战。内置dict类型功能强大,但它缺少许多使访问和操作嵌套值或将字典与不同数据格式相互转换的功能。如果你发现自己在Python中使用字典时遇到困难,那么pythonbenedict可能是你一直在寻找的解决方案。
benedict是内置dict类型的子类,这意味着它与现有词典完全兼容,并且在大多数情况下可以用作直接替代品。
的关键特性之一benedict是它支持keylists和keypaths。这使得访问和操作复杂字典中的值变得容易,而无需手动挖掘嵌套级别。例如:
dbenedict()setvaluesbykeypathd〔profile。firstname〕Fabiod〔profile。lastname〕Caccamoprint(d){profile:{firstname:Fabio,lastname:Caccamo}}print(d〔profile〕){firstname:Fabio,lastname:Caccamo}checkifkeypathexistsindictprint(profile。lastnameind)Truedeletevaluebykeypathdeld〔profile。lastname〕
除了它的键列表和键路径支持之外,benedict还提供了广泛的IO快捷方式来处理各种数据格式。你可以轻松地从JSON、YAML和INI等格式以及CSV、TOML和XML等更专业的格式读取和写入字典。它还支持多个IO操作后端,例如filepath(读写)、url(只读)和云端存储(读写)。3。Memray内存分析器
优化系统的内存使用对于提高其性能和稳定性至关重要。内存泄漏会导致程序消耗越来越多的内存,降低整体系统性能并最终崩溃。虽然垃圾收集器通常易于使用,但Python并没有使你免受这些问题的影响。没有什么可以阻止循环引用或无法访问的对象(有关更多信息,请阅读垃圾收集的工作原理);如果我们谈论CC扩展,则更是如此。
内存分析器可以帮助你识别和修复这些问题,使其成为优化程序内存使用的重要工具。这就是Memray派上用场的地方!
它是一个内存分析器,跟踪Python代码、本机扩展模块和Python解释器本身的内存分配,提供内存使用情况的综合视图。Memray生成各种报告,包括火焰图,以帮助你分析收集的数据并识别泄漏和热点等问题。它速度快,可与Python和本机线程一起使用,使其成为调试多线程程序中内存问题的多功能工具。
Memray可以用作命令行工具或用作更细粒度分析任务的库。它的实时模式允许你在脚本或模块运行时以交互方式检查内存使用情况,这对于调试复杂的内存模式非常有用。
Bloomberg为认真的Python程序员准备的必备工具。4。Codon使用LLVM的Python编译器
我们都喜欢Python,因为它简单易用,但有时我们需要一点额外的运行速度。即使进行了所有优化,Python解释器(如CPython)也只能走这么远。当需要进一步提高性能时,编译器就会出现。它们将我们的Python代码转换为处理器可以直接执行的机器代码,跳过解释器步骤,并给我们带来一些显着的性能提升。
Codon是一种高性能的提前Python编译器,甚至可以在速度方面与CC竞争,据报道典型的加速为10100倍或更多(在单线程上)。它可以使用codon。jit装饰器在更大的Python代码库中使用,也可以使用Python互操作性从Codon中调用纯Python函数和库。
天下没有免费的午餐,因此你可能需要对你的Python代码进行一些修改,以便它可以被Codon编译。但是Codon对语言施加的限制最终会带来性能提升。然而,编译器将通过生成详细的错误消息来指导你识别和帮助你解决不兼容问题。
如果你希望加快代码速度,绝对值得一试。5。LangChain构建LLM支持的应用程序
除非你一直生活在岩石下,否则你很清楚生成人工智能今年一直在席卷全球。其中很大一部分是大型语言模型(LLM)。
我们过去几年为解决AI问题而编写的许多代码都可以扔掉并用LLM代替(例如GPT3或其演变InstructGPT或ChatGPTT5,或任何其他)。此外,我们还见证了LLM接口的一种新编程语言的诞生:基于文本的提示。
LangChain的出现是为了帮助充分利用LLM的全部力量。
第一:在任何认真使用LLM的情况下,人们通常不需要将提示视为一次性的东西,而是将这些东西的组合:模板、用户输入和LLM可以作为参考的输入输出示例。LangChain通过提供接口,可以直接根据各个组件构建不同的提示,帮助你简化这种提示管理。
其次,为了构建提示,有时你需要注入外部知识(甚至其他模型)。例如,假设你需要执行数据库查询以提取个性化电子邮件的客户姓名。这就是链的概念,LangChain为此提供了统一的接口。
然后是获取和扩充数据的概念,以便LLM可以处理你自己的数据,这与训练模型所依据的通用数据相反。
你可以使用LangChain做更多的事情,例如准备在不更改代码的情况下切换到另一个模型提供商,构建具有内存的代理等。
当然,我们期望的创新工具将在2023年大幅增长!6。fugue轻松完成分布式计算
如果你熟悉Pandas或SQL,就会知道这些工具非常适合处理中小型数据集。但是在处理更大量的数据时,往往需要像Spark这样的分布式计算框架来高效处理。问题是,Spark与Pandas或SQL完全不同。语法和概念完全不同,将代码从一个迁移到另一个可能是一个挑战。这就是赋格曲的用武之地。
Fugue是一个库,可以更轻松地使用Spark、Dask和Ray等分布式计算框架。它为分布式计算提供了一个统一的接口,使你可以在Spark、Dask和Ray上执行Python、pandas和SQL代码,而只需进行最少的重写。
最好的起点是使用Fugue的transform()函数。它允许你通过将单个函数引入Spark、Dask或Ray来并行执行单个函数。请参阅以下示例,其中将maplettertofood()函数引入Spark执行引擎:importpandasaspdfromtypingimportDictfrompyspark。sqlimportSparkSessionfromfugueimporttransforminputdfpd。DataFrame({id:〔0,1,2〕,value:(〔A,B,C〕)})mapdict{A:Apple,B:Banana,C:Carrot}defmaplettertofood(df:pd。DataFrame,mapping:Dict〔str,str〕)pd。DataFrame:df〔value〕df〔value〕。map(mapping)returndfsparkSparkSession。builder。getOrCreate()useFuguetransformtoswitchexecutiontosparkdftransform(inputdf,maplettertofood,schema,paramsdict(mappingmapdict),enginespark)print(type(df))df。show()classpyspark。sql。dataframe。DataFrameidvalue0Apple1Banana2Carrot
Fugue允许你为Spark、Dask和Ray项目维护一个代码库,其中逻辑和执行完全分离,从而使程序员不必学习每个不同的框架。
该库还有其他一些有趣的功能和不断壮大的社区,所以一定要检查一下!7。Diffusers生成人工智能
2022年将永远被铭记为生成式人工智能突破人工智能社区前沿并扩展到外部世界的一年。这主要由Diffusionmodels提供支持,由于其在生成高质量图像方面令人印象深刻的能力而受到广泛关注。DALLE2、Imagen和StableDiffusion只是今年引起轰动的扩散模型的几个例子。他们的结果激发了讨论和钦佩,因为他们生成图像的能力突破了以前认为可能的界限甚至是AI专家。
HuggingFace的Diffusers库是用于处理扩散模型的工具和技术的集合,包括稳定扩散模型,该模型已被证明在生成高度逼真和详细的图像方面特别有效。该库还包括用于优化图像生成模型性能和分析图像生成实验结果的工具。
开始使用此库进行文本到图像的生成可能就像删除以下几行代码一样简单:importtorchfromdiffusersimportStableDiffusionPipelinepipeStableDiffusionPipeline。frompretrained(runwaymlstablediffusionv15,torchdtypetorch。float16)pipepipe。to(cuda)promptaphotoofanastronautridingahorseonmarsimagepipe(prompt)。images〔0〕
但漫射器并不止于图像。音频生成甚至分子生成(!)的功能即将推出。
看起来大多数扩散模型的开源实现都将利用该库提供的构建块。8。LineaPy将笔记本转换为生产流水线
Jupyternotebooks是一种非常有用的原型设计和代码开发工具。它们使你可以轻松地将代码、绘图、媒体和交互式小部件混合在一个文档中,从而在你开发代码时轻松记录和理解你的代码。它们是试验代码和测试想法的完美游乐场,对于数据分析和机器学习任务尤其方便。但随着想法的进展,人们对结果感到满意并希望将代码投入生产,挑战开始显现。
notebook中的代码可能并不总是以易于部署到生产环境的方式构建。你是否应该使用笔记本的代码并在别处重写、模块化并使其遵循最佳实践?这是最常见的方法,但缺点是如果以后想要改进或调试某些东西,就会失去笔记本的交互性。所以现在你必须同时维护笔记本和单独的生产代码,这远非理想。
感谢LineaPy,有一条可以做得更好的途径。
LineaPy是一个Python库,可帮助你从原型设计快速过渡到创建强大的数据管道。它可以处理你凌乱的笔记本,帮助清理和重构代码,使其更容易在编排系统或作业调度程序(如cron、ApacheAirflow或Prefect)中运行。
它还有助于提高可重复性:它具有工件的概念,它封装了数据和代码,可以帮助你追溯价值是如何产生的。在高层次上,LineaPy跟踪代码执行的顺序以形成对代码及其上下文的全面理解。
最好的部分?集成非常简单,只需两行代码就可以在Notebook环境下运行!
请务必查看文档,它通过非常全面的示例很好地展示了该工具解决的问题。9。whylogs模型监控
随着AI模型为企业创造实际价值,必须持续监控它们在生产中的行为,以确保价值随着时间的推移而持续。也就是说,必须有一种方法可以表明模型预测是可靠和准确的,并且提供给模型的输入与用于训练它的数据类型没有显着差异。
但模型监控不仅限于AI模型它可以应用于任何类型的模型,包括统计和数学模型。因此这个选秀权的用处。
whylogs是一个开源库,可让你记录和分析任何类型的数据。它提供了一系列功能,首先是生成数据集摘要的能力:whylogsprofiles。
配置文件捕获原始数据的统计信息,例如分布、缺失值和许多其他可配置指标。它们是使用库在本地计算的,甚至可以合并以允许对分布式和流式系统进行分析。它们形成了一种数据表示,方便地不需要公开数据本身,而只需要公开从中导出的指标这有利于隐私。
配置文件很容易生成。例如,要从Pandas生成配置文件,DataFrame你可以执行以下操作:importwhylogsaswhyimportpandasaspddataframedfpd。readcsv(pathtofile。csv)resultswhy。log(df)
但是配置文件只有在你决定用它们做什么时才有用。为此,可视化是必须的。你可以安装可以为你创建交互式报告的viz模块。pipinstallwhylogs〔viz〕这是JupyterNotebook中的示例漂移报告:
使用whylogsviz模块的示例漂移报告。
你还可以设置约束,以便在数据不符合预期时收到通知,有效地对你的数据模型进行某种测试。毕竟,这不是我们从一开始就要做的吗?10。Mito笔记本中的电子表格
在数据科学时代,许多人正在从在电子表格中手动分析数据转变为编写代码来执行此操作。但不可否认的是,电子表格是一种很有吸引力的工具,它提供了一个简化的编辑界面和允许快速迭代的即时反馈。
很多时候,我们使用电子表格处理数据。但是如果我们想对新数据再次做同样的事情,我们必须从头开始!代码在这方面做得更好,为我们节省了宝贵的时间。
我们能否两全其美?遇见美图。
Mito派上用场,因为它是一个库,允许你在JupyterNotebooks中以类似电子表格的界面处理数据。它允许你导入和编辑CSV和XLSX文件、生成数据透视表和图形、过滤和排序数据、合并数据集以及执行各种其他数据操作任务。
最重要的功能:Mito将生成对应于你的每个编辑的Python代码!
美图的工作原理。
Mito还支持使用Excel样式的公式,并提供数据列的汇总统计。它旨在成为数据科学工具包中的第一个工具,这意味着它被构建为一个用户友好的数据探索和分析工具。
像Mito这样的工具降低了进入数据科学世界的门槛,让熟悉Excel或GoogleSheets等软件的人(几乎每个人?)都能快速开始贡献代码。
如果你发现我的任何文章对你有帮助或者有用,麻烦点赞、转发或者赞赏。谢谢!
敏感肌用什么粉饼好选对了不怕起痘或许在大多数人的眼里,每款粉饼都相差无几,但其实小小一块粉饼也是有许多门道的,一起来看看怎么样才能挑到最适合你的吧!敏感肌用什么粉饼好敏感肌对底妆最基本的要求就是轻薄,挑……
铁矿石价格上涨,高位能否持续?来源:【矿业界】受益于良好的宏观、地产政策以及下游需求的恢复,黑色金属市场乐观预期再度发酵,驱动价格集体上行。截至3月3日收盘,铁矿石期货主力合约报收919元吨,较……
花间赏春花间赏春新华网3月31日,人们在山东省青岛市李沧区楼山街道翠湖社区欣赏樱花(无人机照片)。3月31日,游人在江苏省句容市白兔镇龙山湖村赏花。3月31日,……
鲍勃头发型怎么剪好看不同脸型怎么剪鲍勃头好看鲍勃头既可以可爱又可以成熟,是一款百搭发型,也火遍了娱乐圈,很多女星都选择这款利落的鲍勃头,同时,鲍勃头造型多样,不同的脸型能打造出个性鲍勃头哦。鲍勃头发型怎么剪好看……
洗发乳和洗发水的区别洗发露和洗发乳的区别在平时的生活中,洗发水、洗发乳、洗发露都是非常常见的护发产品,它们的作用都是用来清洁头皮的,那么下面就由5号网的小编来为大家介绍洗发乳和洗发水的区别,洗发露和洗发乳的区别。洗发……
老人误喝洗发乳洗发乳是洗发水还是护发素?一般中老年人随着年龄的增长视觉退化,对于一些产品包装上的文字识别不清,甚至有时候发生老人误食洗发乳的事件。那么,洗发乳是洗发水还是护发素?老人误喝洗发乳包装中间印着醒目的……
孙割拒绝赔付2000万给用户,爱玩不玩,不玩滚细数孙割这些年的操作,无论是与斥巨资与巴菲特共进午餐,还是与各种圈内人士V博互杠,总之能蹭到热度的地方一定少不了我们孙割的身影。只能说,只要给孙哥一个机会,孙哥就会把你割……
建议大家若不差钱,尽量添置这4样智能家电,让幸福感倍增现在人们生活在物质发达的时代,越来越多的新型家电出现在我们的生活中,特别是对于当代的年轻人来说,当房子装修完之后,总是希望能够往家里添置更好用的东西。但是我们添置家……
小应验again小应验again(全文2490字)概述:1、行情小解构、外围迹象和杂想一些板块和思绪(一般村长的思绪有点策略价值哦);2、江湖传言;3、经验今天不谈了(今天篇幅有点长,留……
套期保值利润占净利润三成水羊股份靠做外汇期货盈利3000万封面新闻记者朱宁2月6日下午,水羊股份发布关于开展外汇套期保值业务的进展公告。根据公司财务部门初步统计,公司开展外汇套期保值业务产生的公允价值变动损益合计浮动盈利3271……
凯夫拉手机壳理性评测不便宜但也值今年下血本更新了一套苹果设备,手机平板全换了,换完就开始琢磨买配件,最重要的手机壳必须是第一需要考虑的问题,这两年凯夫拉壳太火了,我买了一百多和四百多的两款做做对比,顺带给大家……
limecrime独角兽二代眼影盘色号试色图limecrime最近推出了独角兽二代眼影盘,颜值真的是超美,不飞粉显色度很高。那么limecrime独角兽二代眼影盘色号有哪些?下面提供limecrime独角兽二代眼影盘试色……