首页 > 其他分享 >从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

时间:2024-07-19 08:57:27浏览次数:14  
标签:Python 2025 DuckDB Arrow Polars 数据 Pandas Rust

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。

在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。

这篇文章旨在检验我的预测能力。但我也写这篇文章是为了引发关于关键趋势的讨论,并帮助数据科学家思考他们在未来几年应该发展的技能。

注意事项

  1. 这篇文章是从一个传统上以Pandas进行探索性数据分析,然后将分析结果以无服务器函数形式进行生产化的工作者的角度出发。生产阶段可能涉及机器学习模型,但也可能是一组定义好的规则和正则表达式。
  2. 我的经验也包括作为研究科学家在集群上运行大规模分析,而不涉及任何无服务器生产阶段。

预测一:Polars 和 DuckDB 将取代 Pandas 作为表格数据的核心工具

随着性能上相比 Pandas 的巨大飞跃,Polars 和 DuckDB 将成为 Python 中数据分析的标准工具。这一转变已经从那些感受到最大性能压力的用户开始,但随着它们周围生态系统的发展,它们将成为标准。

然而,这些工具的优势并不仅仅在于它们计算速度有多快。Polars 的表达式语法比 Pandas 中相应的语法更适合描述数据转换。这两个库都应用了自动查询优化,避免了 Pandas 代码越来越繁琐的手动优化。它们还都处理了并行化和大于内存的数据,而无需其他无数依赖项。

我认为 Polars 和 DuckDB 将成为双寡头,而不是其中之一取代 Pandas 成为垄断者。尽管这两个库的功能有很多重叠,但有些人会想要一个像 DuckDB 这样的工具,它拥有更多关系型数据库的陷阱,而有些人则不会。

预测二:Arrow 将成为数据科学生态系统的核心技术

Apache Arrow 是一种用于表示内存中数据的格式。Arrow 的设计是语言无关的,并且许多语言中都出现了实现这种格式的库。

Polars 是直接基于名为 Arrow2 的 Rust Arrow 库构建的。DuckDB 并不是基于 Arrow 构建的,但它可以从 Arrow 数据中进行零拷贝读取。

Arrow 将取代 Numpy 数组在数据科学生态系统中表格数据的核心地位。这意味着可视化、机器学习和其他库将接受 Arrow 对象作为输入。由于 Arrow 允许零拷贝数据交换,这些库将能够直接从数据框中直接摄取数据,而无需像现在这样进行大量浪费性的数据复制。

随着 Arrow 使得进程间通信更加容易,我们还将看到数据科学工具的融合,例如在 Python 脚本中拟合 R 模型。

在这方面,变革的步伐比 Polars 和 DuckDB 的采用要慢一些。然而,变革的步伐正在加快。例如,XGBoost 模型现在接受 Arrow 表作为输入,而 Huggingface 的 Datasets 库则使用 Arrow 作为其本地缓存系统。

预测三:Rust 化的趋势

在数据科学蓬勃发展的十年里,我所在领域的日常工作主要由像 Python 这样的动态语言或像 R 和 Julia 这样使用即时编译的语言主导。虽然像 C 和 C++ 这样的编译型语言被用于 Python 扩展或 DuckDB 的内部,但很少有数据科学家直接使用它们。

我预测 Rust 将成为数据科学家常用的第一种预编译语言(而不会取代 Python 和 R 作为主要语言)。Rust 在数据科学家中的普及将受到 Polars 的推动,用户会发现从使用 Python 切换到 Rust API 的门槛相对较低——比从 Pandas 切换到 C 的门槛要低得多!

我们还将看到更多基于 Rust 构建的库,这些库将提供 Python 和 R 的 API。特别是,我认为我们将看到一个广泛使用的、用 Rust 编写并基于 Apache Arrow 的 Scikit-Learn 替代品。

在过去的几个月里,我在 Polars 的工作中明显感受到了 Rust 的优势。相比 Python,Rust 在性能上的提升是巨大的,并且并行化得到了可靠的管理。然而,Rust 周围的现代工具系统,如用于管理依赖项的 Cargo,使得 Rust 对于 Python 开发者来说比旧语言更容易接受。我之所以决定将精力集中在 Polars 而不是 DuckDB 上,其中一个因素就是我对学习 Rust 的热情远超过学习 C++。

关于GPU

我最近将Polars描述为地球上最快的数据科学工具。然而,一位受访者正确地指出,基于GPU的库(如cuDF)更快。但是,使用GPU的额外成本很高,包括GPU本身的成本以及管理额外云实例的成本。

GPU在数据处理方面的流行度将继续增长,但在未来几年内不会成为标准方法。随着Polars和DuckDB通过内置并行化和矢量化指令更高效地利用多核CPU,只有高级用户才会觉得使用GPU的成本效益是合理的。

标签:Python,2025,DuckDB,Arrow,Polars,数据,Pandas,Rust
From: https://blog.csdn.net/sosogod/article/details/140428882

相关文章

  • 【python学习】第三方库之pandas库的定义、特点、功能、使用场景和代码示例
    引言pandas是一个强大的Python库,用于数据分析和数据处理。它基于NumPy,提供了灵活的数据结构(Series和DataFrame)和数据操作功能,是数据科学和机器学习中不可或缺的工具文章目录引言一、安装`pandas`第三方库二、`pandas`的定义三、特点3.1强大的数据结构3.2灵活的数据......
  • 【利用Python进行数据分析8】Pandas入门(描述性统计的汇总与计算)
    导包importyfinanceasyfimportpandasaspdimportnumpyasnp1.描述性统计的汇总与计算#1.描述性统计的汇总与计算#数值型数据df=pd.DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=["a","b","c","d"],......
  • python 解题 洛谷B2021到B2025
    B2021输出保留3位小数的浮点数n=float(input())n=n-0.000000000000001print('%.3f'%n)B2022输出保留12位小数的浮点数m=float(input())print('%.12f'%m)B2023空格分隔输出a=input()b=int(input())c=float(input())d=float(input())print(a,"",b,"......
  • Pandas运行报错分析:ValueError: Length mismatch: Expected axis has 0 elements, new
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 2025年美国新奥尔良国际雪茄及烟斗协会贸易展 PCA Trade Show
    展会时间:2025年4月11日-14日展会地点:美国新奥尔良展会周期:一年一届主办单位:高级雪茄协会PremiumCigarAssociation展品范围各种香烟类、卷烟类、雪茄类、电子烟等;烈酒类、酒精饮料等酒精类产品类;烟具类、烟缸类、火机类、火柴类,酒瓶类等;自动贩售机类、酒类储藏柜......
  • 2025年美国拉斯维加斯国际烟草展览会Tobacco Plus Expo
    展会时间:2025年1月29日-1月31日展会地点:拉斯维加斯会展中心展会周期:一年一届主办单位:TMGInc.展品范围各种香烟、卷烟、雪茄、电子烟、水烟等;烟具、烟缸、火机、火柴等;烟丝、卷烟过滤嘴、卷烟纸、烟用化学品、粘合剂、香精和香精材料等;展会介绍   TPE是最大的优......
  • 2025年美国芝加哥国际家庭用品博览会IHA The Inspired Home Show
    展会时间:2025年3月2日-4日展出地点:美国芝加哥主办单位:美国家庭用品协会展馆名称:麦考密展览馆McCormickPlace展览周期:一年一届展品范围家庭日用品、家庭五金工具、金属器皿、餐具、小家电、家庭装饰品、圣诞礼品、宠物用具、儿童用品、塑料制品、烹饪用具、美食......
  • Python酷库之旅-第三方库Pandas(023)
    目录一、用法精讲58、pandas.isnull函数58-1、语法58-2、参数58-3、功能58-4、返回值58-5、说明58-6、用法58-6-1、数据准备58-6-2、代码示例58-6-3、结果输出59、pandas.notna函数59-1、语法59-2、参数59-3、功能59-4、返回值59-5、说明59-6、用法59-6-1、......
  • sqlalchemy pandas转化字典转为orm写入到sqlite数据库报错类型错误的解决办法
    使用pandas读取csv数据,然后将其转化为字典,再写入到数据库的时候,数据库总是报错类型错误,于是转为orm之前,统一转化一下类型fromsqlalchemyimportDECIMAL,Index,String,Date,Integer,Text,CHAR,SmallInteger,Float,Time,case,and_,extract,TypeDecoratorfrom......
  • 从 Pandas 到 Polars 十四:在Polars中拟合线性模型
    ​线性模型是数据科学和机器学习的基石。它们易于理解且拟合速度快。有了这个出色的新Polars插件,你现在可以直接在Polars中拟合线性模型,包括Lasso回归和Ridge回归。这项工作是由AmzyRajab在这个github仓库中完成的。如果你想跟着学习,第一步是安装这个插件。你可以通过以下命......