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

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

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

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]删除
最新教程 更多>
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-03-15
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。 映射{} 因此。我们不使用jQuery的“ .aimimate(...
    编程 发布于2025-03-15
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-03-15
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-03-15
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-03-15
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-03-15
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-03-15
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    在Microsoft Visual C 中,Microsoft consions用户strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate st...
    编程 发布于2025-03-15
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-03-15
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-03-15
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-03-15
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-03-15
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-03-15
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-03-15
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, attributeError:SomeClass实...
    编程 发布于2025-03-15

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

Copyright© 2022 湘ICP备2022001581号-3