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 教程列表。