polars,一个超强的 Python 库!

627 阅读4分钟

更多学习内容:ipengtao.com

大家好,今天为大家分享一个超强的 Python 库 - polars。

Github地址:github.com/pola-rs/pol…


数据分析是现代应用程序和业务决策的关键组成部分。Python 作为一门强大的编程语言,拥有丰富的数据处理库和工具,其中之一就是 Polars。Polars 是一个现代化的数据操作和分析库,它提供了高性能的数据操作功能,支持链式方法调用,并且兼容 Pandas 和 Arrow 格式。本文将深入探讨 Python Polars,包括其基本概念、使用方法和示例代码。

什么是 Python Polars?

Polars 是一个开源的数据操作库,旨在提供高性能、易用且功能强大的数据处理工具。与传统的数据操作库相比,Polars 具有许多优势:

  • 性能卓越:Polars 使用 Rust 编写,具有出色的性能。它在大规模数据操作时比 Pandas 更快。

  • 链式方法调用:Polars 支持链式方法调用,使数据处理流程更加清晰和易读。

  • Pandas 兼容性:Polars 提供了与 Pandas 兼容的 API,可以轻松迁移现有的 Pandas 代码。

  • Arrow 格式支持:Polars 支持 Apache Arrow 数据格式,与其他数据处理工具无缝集成。

安装 Python Polars

要开始使用 Python Polars,首先需要安装它。

可以使用 pip 包管理器来安装 Polars:

pip install polars

安装完成后,就可以在 Python 项目中导入 Polars 并开始使用它。

Python Polars 的基本用法

示例 1:创建和操作数据框架

import polars as pl

# 创建一个 Polars 数据框架
df = pl.DataFrame({
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["New York", "San Francisco", "Los Angeles"]
})

# 显示数据框架的前几行
print(df)

示例 2:选择和过滤数据

# 选择特定列
selected_df = df.select(["name", "age"])
print(selected_df)

# 过滤数据
filtered_df = df.filter(df["age"] > 30)
print(filtered_df)

示例 3:排序和分组

# 按年龄降序排序
sorted_df = df.sort("age", reverse=True)
print(sorted_df)

# 按城市分组并计算每个城市的平均年龄
grouped_df = df.groupby("city").agg(pl.col("age").mean().alias("avg_age"))
print(grouped_df)

示例 4:合并数据框架

# 创建第二个数据框架
df2 = pl.DataFrame({
    "name": ["David", "Eve"],
    "age": [28, 24],
    "city": ["Chicago", "Boston"]
})

# 合并两个数据框架
merged_df = df.concat(df2)
print(merged_df)

示例 5:使用表达式计算新列

# 使用表达式计算新列
df = df.with_column(pl.when(df["age"] > 30).then("old").otherwise("young").alias("age_group"))
print(df)

示例 6:使用 Arrow 格式导入和导出数据

# 导出数据框架到 Arrow 格式
df.write_arrow("data.arrow")

# 从 Arrow 格式导入数据框架
imported_df = pl.read_arrow("data.arrow")
print(imported_df)

更多功能和选项

当涉及到 Python Polars 的更多功能和选项时,它提供了许多强大的工具和方法,用于数据操作和分析。

1. 数据连接

Polars 可以执行各种数据连接操作,以合并、连接和联接数据框架。以下是一些常见的数据连接操作示例:

内连接

import polars as pl

df1 = pl.DataFrame({
    "key": [1, 2, 3],
    "value1": ["A", "B", "C"]
})

df2 = pl.DataFrame({
    "key": [2, 3, 4],
    "value2": ["X", "Y", "Z"]
})

# 内连接
merged_df = df1.inner_join(df2, on="key")
print(merged_df)

左连接

# 左连接
merged_df = df1.left_join(df2, on="key")
print(merged_df)

右连接

# 右连接
merged_df = df1.right_join(df2, on="key")
print(merged_df)

外连接

# 外连接
merged_df = df1.outer_join(df2, on="key")
print(merged_df)

2. 数据透视表

数据透视表是一种汇总和分析数据的强大工具。Polars 可以创建数据透视表并执行各种聚合操作:

# 创建数据透视表并计算平均值
pivot_table = df.pivot(index="city").agg(pl.col("age").mean().alias("avg_age"))
print(pivot_table)

3. 窗口函数

窗口函数可以在数据框架的窗口或分组上执行计算。以下是一个示例,演示如何使用窗口函数计算每个城市的年龄排名:

window = df.groupby("city").with_column(pl.col("age").rank().over("city").alias("age_rank"))
print(window)

4. 缺失数据处理

Polars 提供了多种方法来处理缺失数据,包括填充、删除和插值。以下是一些示例:

填充缺失值

# 使用常数填充缺失值
filled_df = df.fill_none(0)
print(filled_df)

删除缺失值

# 删除包含缺失值的行
cleaned_df = df.dropna()
print(cleaned_df)

插值

# 使用线性插值填充缺失值
interpolated_df = df.interpolate()
print(interpolated_df)

5. 自定义函数

可以编写自定义函数并将其应用于数据框架中的列。以下是一个示例,演示如何将自定义函数应用于列:

# 定义自定义函数
def custom_function(value):
    return value * 2

# 应用自定义函数
df = df.with_column(pl.col("age").apply(custom_function).alias("double_age"))
print(df)

6. 多线程执行

Polars 支持多线程执行,这可以加速数据处理过程。可以通过设置线程数来控制多线程执行的程度:

pl.set_thread_pool_threads(4)  # 设置线程数为 4

总结

Python Polars 是一个功能强大且性能出色的数据操作库,适用于数据科学家、分析师和开发人员。它提供了丰富的数据处理功能,支持链式方法调用,兼容 Pandas 和 Arrow 格式。无论是数据清洗、分析还是可视化,Polars 都能满足你的需求。


Python学习路线

更多学习内容:ipengtao.com

Python基础知识.png