python polars数据科学库对比Pandas优势分析

 更新时间:2024年01月30日 09:25:02   作者:程序员小寒  
这篇文章主要为大家介绍了python polars数据科学库对比Pandas优势分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

python polars数据科学库

今天给大家分享一个神奇的 python 库,polars。

https://github.com/pola-rs/polars 

大家都知道,Pandas 是数据科学中重要的 Python 库。但它最大的缺点是对大型数据集的操作可能很慢。

Polars 是一个开源且相对较新的数据分析和处理库,为广泛流行的 Pandas 库提供了替代方案

为什么它比 Pandas 快

根据 Polars 用户指南,其目标是 “利用机器上的所有可用内核,以提供一个闪电般快速的 DataFrame 库。”

与 Polars 相比,Pandas 本身并不跨计算机核心并行处理。而 Polars 是为并行化而设计的。

Polars 有两种不同的 API:急切 API 和惰性 API

急切执行类似于 Pandas。这意味着直接运行代码,并立即返回结果。

延迟执行是在你需要结果之前不会运行。因此它避免了运行不必要的代码,所以延迟执行比急切执行更有效。

对于延迟执行,你必须使用 .lazy() 方法开始操作。然后你就可以为你想做的任何事情编写代码。

最后,你需要运行 .collect() 方法来显示结果。

如下所示

df.lazy() 
  .with_columns([(pl.col("col") * 10).alias("new_col")]) 
  #... 
  .collect()

如果不运行 .collect() 方法,该操作不会立即执行。

安装库

可以直接使用 pip 进行安装。

pip install polars

之后,你可以像导入 Pandas 一样导入 Polars 。

import polars as pl
import pandas as pd

Pandas and Polars 比较

乍一看,Pandas 和 Polars(急切 API)在语法上很相似,因为它们共享主要构建块:Series 和 DataFrame。

此外,Polars 中的许多表达式与 Pandas 表达式类似。

# Example expressions that work both with Pandas and Polars
df.head() # Get the first n rows
df.tail() # Get the last n rows
df.unique() # Get unique values of this expression.

下面,我们来一起探讨一下 Polars 与 Pandas 在语法和执行时间方面的主要区别。主要从以下几个操作来进行比较。

  • 读取数据

  • 选择和过滤数据

  • 创建新列

  • 分组和聚合

读取数据

在 Polars 中读取 CSV 文件会感觉很熟悉,因为你可以像在 Pandas 中一样使用 .read_csv() 方法:

# Pandas
df_pd=pd.read_csv('example.csv')

# Polars
df_pl.read_csv('example.csv')

分别使用 Pandas 和 Polars 读取示例数据集的执行时间如下所示:

对于我们的示例数据集,使用 Pandas 读取数据所需的时间大约是使用 Polars 的八倍。

选择和过滤数据

Pandas 和 Polars 之间的第一个主要区别是 Polars 不使用索引。

尽管相同的 Pandas 代码可以在 Polars 上运行,但这不是最佳实践。

在 Polars 中,你应该使用 .select() 方法来选择数据。

# Pandas
df_pd[['col1', 'col2']] 

# The above code will run with Polars as well, 
# but the correct way in Polars is:
df_pl.select(['col01', 'col02'])

在 Pandas 和 Polars 中选择数据的执行时间如下所示:

对于我们的示例数据集,使用 Pandas 选择数据所需的时间大约是使用 Polars 的 15 倍。

虽然你可以在 Pandas 中使用 .query() 方法来过滤数据,但你需要在 Polars 中使用 .filter() 方法。

# Pandas
df_pd.query('col01 > 5')

# Polars
df_pl.filter(pl.col('col01') > 5)

在 Pandas 和 Polars 中过滤数据的执行时间如下所示:

对于我们的示例数据集,在 Pandas 和 Polars 中过滤数据所需的时间相似。

与 Pandas 相比,Polars 可以并行运行 .select() 和 .filter() 中的操作。

创建新列

在 Polars 中创建新列的方法也与你在 Pandas 中的习惯不同。

在 Polars 中,你需要使用 .with_column() 或 .with_columns() 方法,具体取决于你要创建的列数。

# Pandas
df_pd["new_col"] = df_pd["col01"] * 10

# Polars
df_pl.with_column((pl.col("col01") * 10).alias("new_col"))

# Polars for multiple columns
# df_pl.with_columns([(pl.col("col01") * 10).alias("new_col"), ...])

在 Pandas 和 Polars 中创建新列的执行时间如下所示:

对于我们的示例数据集,使用 Polars 创建新列所需的时间大约是使用 Pandas 的两倍。

分组和聚合

Pandas 和 Polars 的分组和聚合在语法方面略有不同,但都使用 .groupby() 和 .agg() 方法。

# Pandas
df_pd.groupby('col01').col02.agg('mean')

# Polars
df_pl.groupby('col01').agg([pl.mean('col02')])

在 Pandas 和 Polars 中对数据进行分组和聚合的最终执行时间如下所示。

对于我们的示例数据集,使用 Pandas 聚合数据所需的时间大约是使用 Polars 的两倍。

详细源码可以查看 https://www.kaggle.com/code/iamleonie/pandas-vs-polars 

Polars 相对于 Pandas 的主要优势是速度。

如果你需要对大型数据集进行大量数据处理,那么你绝对应该尝试 Polars。

此外,你可能还发现,对于相同的操作,Polars 代码通常比 Pandas 代码长一些。

以上就是python polars数据科学库对比Pandas优势分析的详细内容,更多关于python polars数据科学库的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Python定时器Timer的使用及示例

    详解Python定时器Timer的使用及示例

    这篇文章主要介绍了详解Python定时器的使用及示例,Timer定时器源码实现,和自定义一个线程方式一样,都是继承Thread类,重写了run()方法,只是实现的功能是延时执行一个函数或方法,需要的朋友可以参考下
    2023-05-05
  • Django使用Celery异步任务队列的使用

    Django使用Celery异步任务队列的使用

    这篇文章主要介绍了Django使用Celery异步任务队列的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析

    python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析

    这篇文章主要介绍了python 正则表达式贪婪模式与非贪婪模式原理、用法,结合实例形式详细分析了python 正则表达式贪婪模式与非贪婪模式的功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-10-10
  • Python实现批量word文档转pdf并统计其页码

    Python实现批量word文档转pdf并统计其页码

    pypdf2是一个Python模块,可以用来读取、写入和操作PDF文件,本文就将利用该模块实现批量word文档转pdf并统计其页码,需要的小伙伴可以了解一下
    2023-05-05
  • python爬虫基础之简易网页搜集器

    python爬虫基础之简易网页搜集器

    这篇文章主要介绍了python爬虫基础之简易网页搜集器,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • django的csrf实现过程详解

    django的csrf实现过程详解

    这篇文章主要介绍了django的csrf实现过程相加,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python实现冒泡排序算法的完整实例

    Python实现冒泡排序算法的完整实例

    这篇文章主要给大家介绍了关于Python实现冒泡排序算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 5款最强且免费的Python IDE小结

    5款最强且免费的Python IDE小结

    开发工具在日常代码编写过程中起着至关重要的作用,一款优秀的开发工具,不仅可以尽可能的减少你在配置方面耗费的精力,本文主要介绍了5种,感兴趣的可以了解一下
    2021-07-07
  • Python如何实现拆分数据集

    Python如何实现拆分数据集

    这篇文章主要介绍了Python如何实现拆分数据集问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python中提高pip install速度

    python中提高pip install速度

    本文给大家分享了如何提高pip install速度的方法,其实就是将默认源替换为国内高速的源,非常的简单实用,有需要的小伙伴可以参考下
    2020-02-02

最新评论