Pandas 与 Polars:语法、速度和内存的完整比较

需要帮助选择正确的 Python 数据框架库吗?本文对 Pandas 和 Polars 进行了比较,以帮助您做出决定。

来源:KDnuggets

简介

如果您一直在 Python 中处理数据,那么您几乎肯定使用过 pandas。十多年来,它一直是数据操作的首选库。但最近,Polars 受到了极大的关注。 Polars 有望比 pandas 更快、更节省内存、更直观。但值得学习吗?到底有什么不同呢?

在本文中,我们将并排比较 pandas 和 Polars。您将看到性能基准,并了解语法差异。最后,您将能够为下一个数据项目做出明智的决定。

您可以在 GitHub 上找到代码。

开始使用

让我们先安装这两个库:

pip 安装 pandas 极坐标

注意:本文使用 pandas 2.2.2 和 Polars 1.31.0。

对于此比较,我们还将使用足够大的数据集来查看实际的性能差异。我们将使用 Faker 生成测试数据:

现在我们准备开始编码了。

通过读取大型 CSV 文件来测量速度

让我们从最常见的操作之一开始:读取 CSV 文件。我们将创建一个包含 100 万行的数据集,以查看实际的性能差异。

首先,让我们生成示例数据:

将 pandas 导入为 pd

从 faker 导入 Faker

随机导入

# 生成一个大的 CSV 文件用于测试假=假冒者()Faker.seed(42)随机种子(42)数据 = {'user_id':范围(1000000),'name': [fake.name() for _ in range(1000000)],'email': [fake.email() for _ in range(1000000)],'年龄': [random.randint(18, 80) for _ in range(1000000)],'工资': [random.randint(30000, 150000) for _ in range(1000000)],'部门': [random.choice(['工程', '销售', '营销', '人力资源', '财务'])对于 _ 在范围内(1000000)]}df_temp = pd.DataFrame(数据)df_temp.to_csv('large_dataset.csv',index=False)print("✓ 生成具有 1M 行的 large_dataset.csv")此代码创建一个包含实际数据的 CSV 文件。现在我们来比较一下阅读速度:读取示例 CSV 时的输出:示例输出: