更多Python学习内容:ipengtao.com
大家好,今天为大家分享一个超强的 Python 库 - polars。
Github地址:https://github.com/pola-rs/polars
数据分析是现代应用程序和业务决策的关键组成部分。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 pldf1 = 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
干货笔记整理
100个爬虫常见问题.pdf ,太全了!
Python 自动化运维 100个常见问题.pdf
Python Web 开发常见的100个问题.pdf
124个Python案例,完整源代码!
PYTHON 3.10中文版官方文档
耗时三个月整理的《Python之路2.0.pdf》开放下载
最经典的编程教材《Think Python》开源中文版.PDF下载
点击“阅读原文”,获取更多学习内容