”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Polars 与 Pandas Python 数据帧的新时代?

Polars 与 Pandas Python 数据帧的新时代?

发布于2024-11-08
浏览:807

Polars vs. Pandas A New Era of Dataframes in Python ?

北极熊与熊猫:有什么区别?

如果您一直关注 Python 的最新发展,您可能听说过 Polars,一个用于处理数据的新库。虽然 pandas 长期以来一直是首选库,但 Polars 正在掀起波澜,尤其是在处理大型数据集方面。那么,Polars 有什么大不了的呢?它和熊猫有什么不同?让我们来分解一下。


什么是极地?

Polars 是一个使用 Rust(一种快速的现代编程语言)构建的免费开源库。它旨在帮助 Python 开发人员以更快、更高效的方式处理数据。将其视为 pandas 的替代方案,当您处理 pandas 可能难以处理的非常大的数据集时,它会表现出色。


为什么要创建极地?

Pandas 已经存在很多年了,许多人仍然喜欢使用它。但随着数据变得越来越大、越来越复杂,pandas 开始表现出一些弱点。 Polars 的创建者 Ritchie Vink 注意到了这些问题,并决定创造一些更快、更高效的东西。甚至 Wes McKinney,pandas 的创建者,也在一篇题为 “我讨厌 pandas 的 10 件事” 的博客文章中承认,pandas 可以进行一些改进,特别是对于大型数据集。

这就是 Polars 的用武之地,它的设计速度快且内存效率高,这是 pandas 在处理大数据时遇到的两个问题。


主要区别:北极熊与熊猫

1. 速度

Polars 速度非常快。事实上,一些基准测试表明,在执行过滤或分组数据等常见操作时,Polars 的速度比 pandas 快 5-10 倍。当您处理大型数据集时,这种速度差异尤其明显。

2. 内存使用情况

Polars 在记忆方面效率更高。它使用的内存比 pandas 少 5 到 10 倍,这意味着您可以处理更大的数据集而不会遇到内存问题。

3. 延迟执行

Polars 使用称为延迟执行的东西,这意味着它不会在您编写操作时立即运行每个操作。相反,它会等到您编写了一系列操作,然后立即运行它们。这有助于它优化并更快地运行。另一方面,Pandas 会立即运行每个操作,这对于大型任务来说可能会更慢。

4. 多线程

Polars 可以同时使用多个 CPU 核心来处理数据,这使得处理大数据集的速度更快。 Pandas 大多是单线程的,这意味着它一次只能使用一个 CPU 核心,这会减慢速度,尤其是在处理大型数据集时。


为什么 Polar 如此快?

Polars 速度快有几个原因:

  • 它内置于 Rust,这是一种以其速度和安全性而闻名的编程语言,使其超级高效。
  • 它使用Apache Arrow,这是一种在内存中存储数据的特殊方式,可以更轻松、更快速地跨不同编程语言使用。

Rust 和 Apache Arrow 的这种组合使 Polars 在速度和内存使用方面比 pandas 更具优势。


Pandas 的优点和局限性

虽然 Polars 非常适合大数据,但 pandas 仍然占有一席之地。 Pandas 非常适合中小型数据集,并且已经存在很长时间了,它拥有大量的功能和庞大的社区。因此,如果您不使用庞大的数据集,pandas 可能仍然是您的最佳选择。

但是,随着数据集变大,pandas 往往会使用更多内存并且速度变慢,这使得 Polars 在这些情况下成为更好的选择。


什么时候应该使用 Polar?

如果出现以下情况,您应该考虑使用 Polars:

  • 您正在使用大型数据集(数百万或数十亿行)。
  • 您需要速度和性能才能快速完成任务。
  • 您有内存限制并且需要节省您正在使用的 RAM 量。

结论

北极熊和熊猫都有各自的优点。如果您正在处理中小型数据集,pandas 仍然是一个很棒的工具。但如果您正在处理大型数据集并且需要更快、更高效的内存效率,Polars 绝对值得尝试。得益于 Rust 和 Apache Arrow,其性能得到提升,使其成为数据密集型任务的绝佳选择。

随着 Python 的不断发展,Polars 可能会成为处理大数据的新的首选工具。

编码愉快? ?

版本声明 本文转载于:https://dev.to/aashwinkumar/polars-vs-pandas-a-new-era-of-dataframes-in-python--1654?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8表中将latin1字符转换为utf8 ,您遇到了一个问题,其中含义的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致电。为了解决此问题,您正在尝试使用“ mb_convert_encoding”和“ iconv”转换受...
    编程 发布于2025-06-27
  • Python元类工作原理及类创建与定制
    Python元类工作原理及类创建与定制
    python中的metaclasses是什么? Metaclasses负责在Python中创建类对象。就像类创建实例一样,元类也创建类。他们提供了对类创建过程的控制层,允许自定义类行为和属性。在Python中理解类作为对象的概念,类是描述用于创建新实例或对象的蓝图的对象。这意味着类本身是使用类关...
    编程 发布于2025-06-27
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-06-27
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-06-27
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-06-27
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-06-27
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-06-27
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-06-27
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    将pandas dataframe列转换为dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定义格式:})指定的格式参数匹配给定的字符串格式。转换后,MyCol列现在将包含DateTime对象。 date oped filtering > = p...
    编程 发布于2025-06-27
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    Pivoting Query Results Using MySQL GROUP BYIn a relational database, pivoting data refers to the rearrangement of rows and columns to enhance data vis...
    编程 发布于2025-06-27
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    编程 发布于2025-06-27
  • Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    在ASP.NET async void void async void void void void void的设计无需返回asynchroncon而无需返回任务对象。他们在执行过程中增加未偿还操作的计数,并在完成后减少。在某些情况下,这种行为可能是有益的,例如未期望或明确预期操作结果的火灾和...
    编程 发布于2025-06-27
  • MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    在两个条件下插入或更新或更新 solution:的答案在于mysql的插入中...在重复键更新语法上。如果不存在匹配行或更新现有行,则此功能强大的功能可以通过插入新行来进行有效的数据操作。如果违反了唯一的密钥约束。实现所需的行为,该表必须具有唯一的键定义(在这种情况下为'名称'...
    编程 发布于2025-06-27
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-06-27
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-06-27

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3