Python Polars 教程
最后修改时间:2025年3月1日
Polars 是一个快速的 Python DataFrame 库,专为高效的数据操作和分析而设计。它以性能为导向,底层利用 Rust 实现。本教程将通过实际示例介绍 Polars。
Polars 支持懒惰和即时执行模式,非常适合处理大型数据集。它提供了一个类似 Pandas 的 API,并增加了额外的优化。
创建 DataFrame
本示例展示了如何从字典创建 Polars DataFrame。
import polars as pl data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] } df = pl.DataFrame(data) print(df)
pl.DataFrame
函数从字典创建 DataFrame。这是初始化 Polars DataFrame 最简单的方法。
读取 CSV 文件
本示例演示了如何将 CSV 文件读取到 Polars DataFrame 中。
import polars as pl df = pl.read_csv('data.csv') print(df)
pl.read_csv
函数将 CSV 文件读取到 DataFrame 中。Polars 支持各种文件格式,包括 Parquet 和 JSON。
过滤行
本示例展示了如何根据条件过滤行。
import polars as pl df = pl.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] }) filtered_df = df.filter(pl.col('Age') > 30) print(filtered_df)
filter
方法根据“Age”列大于 30 的条件过滤行。Polars 使用表达式进行高效过滤。
选择列
本示例演示了如何从 DataFrame 中选择特定列。
import polars as pl df = pl.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] }) selected_df = df.select(['Name', 'City']) print(selected_df)
select
方法从 DataFrame 中选择特定列。这对于关注相关数据非常有用。
添加新列
本示例展示了如何向 DataFrame 添加新列。
import polars as pl df = pl.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] }) df = df.with_column((pl.col('Age') * 2).alias('DoubleAge')) print(df)
with_column
方法添加了一个名为“DoubleAge”的新列,该列是“Age”列的两倍。Polars 支持列对列的操作。
分组和聚合
本示例演示了如何对数据进行分组并计算聚合统计量。
import polars as pl df = pl.DataFrame({ 'City': ['New York', 'Los Angeles', 'New York', 'Chicago'], 'Sales': [100, 200, 150, 300] }) grouped_df = df.groupby('City').agg([ pl.col('Sales').sum().alias('TotalSales') ]) print(grouped_df)
groupby
和 agg
方法按“City”对数据进行分组,并计算每个城市的总销售额。Polars 支持高效的分组。
排序数据
本示例展示了如何按特定列对 DataFrame 进行排序。
import polars as pl df = pl.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] }) sorted_df = df.sort('Age', reverse=True) print(sorted_df)
sort
方法按“Age”列以降序对 DataFrame 进行排序。Polars 提供高效的排序算法。
懒惰执行
本示例演示了如何使用懒惰执行来优化性能。
import polars as pl df = pl.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] }) lazy_df = df.lazy().filter(pl.col('Age') > 30).collect() print(lazy_df)
lazy
方法启用懒惰执行,它会在执行前优化查询。使用 collect
触发计算。
使用 Polars 的最佳实践
- 使用懒惰执行: 通过懒惰执行优化大型数据集的查询。
- 利用表达式: 使用 Polars 表达式进行高效的数据操作。
- 选择合适的数据类型: 使用正确的数据类型来提高性能。
- 分析查询: 分析查询以识别瓶颈。
来源
在本文中,我们通过实际示例探索了 Polars 的基础知识。
作者
所有 Polars 教程列表。