polars,一个超强的 Python 库!

e553ffce9aed0336f69211bf4954fae1.jpeg

更多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下载

7dadb9308c6d89a4f6d7c5c715e8eb93.png

点击“阅读原文”,获取更多学习内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/411857.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3项目eslint配置、配置prettier(格式化配置)

文章链接: 全部配置链接 第一步:eslint配置、配置prettier(代码格式化):点击链接 (1) .eslint.cjs—eslint配置文件 (2).eslintignore—校验忽略文件 (3).prettierrc.json添加规则 (4).prettierignore忽略文件 prettierrc规范说明: 第二步:styleLint配置 样式链接 第三…

py爬虫入门笔记(request.get的使用)

文章目录 Day11. 了解浏览器开发者工具2. Get请求http://baidu.com3. Post请求https://fanyi.baidu.com/sug4. 肯德基小作业 Day21. 正则表达式2. 使用re模块3. 爬取豆瓣电影Top250的第一页4. 爬取豆瓣电影Top250所有的250部电影信息 Day31. xpath的使用2. 认识下载照片线程池的…

JMeter请求参数Parameters,带中文或特殊字符(+/=)时,例如登录密码或者token等,需要勾选编码

以前的登录接口密码参数不包含特殊字符,为了安全,产品今天修改了需求,密码必须由数字,字母和特殊字符构成,之前利用JMeter接口编写的脚本报错了,调整了一下,里面踩了一点坑,记录下来…

k8s的对外服务--ingress

service作用体现在两个方面 1、集群内部 不断跟踪pod的变化,更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制 2、集群外部 类似负载均衡器,把流量ip端口,不涉及转发url(http,https&a…

Servlet系列两种创建方式

一、使用web.xml的方式配置(Servlet2.5之前使用) 在早期版本的Java EE中,可以使用XML配置文件来定义Servlet。在web.xml文件中,可以定义Servlet的名称、类名、初始化参数等。然后,在Java代码中实现Servlet接口&#x…

阿里云国外云服务器多少钱?2024年最新价格

阿里云国外服务器优惠活动「全球云服务器精选特惠」,国外服务器租用价格24元一个月起,免备案适合搭建网站,部署独立站等业务场景,阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动: 全球云服务器精选特惠…

企业怎么传输大容量视频?

在企业中,视频的应用越来越广泛,不论是在内部沟通、培训、宣传,还是在外部合作、推广、展示方面,视频都扮演着不可或缺的角色。然而,由于视频文件通常较大,传输时往往会面临网速慢、容量限制、安全风险等问…

leetcode 每日一题 2024年01月18日 拿出最少数目的魔法豆

题目 给定一个 正整数 数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少还有一颗 魔法豆的袋子)魔法豆的数目 …

Android应用开发:基础小游戏开发

手机游戏成为人们日常娱乐的重要组成部分。如果您想踏入这个充满创意和技术挑战的领域,制作一个Android基础小游戏是个不错的开始。以下是从零开始制作Android小游戏的基础指南。 1选择开发环境和工具 Android Studio 是官方推荐的开发环境,它提供了强大…

掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…

宝塔发布网站问题汇总和记录

1、添加网站站点后打不开 解决办法,关闭防跨站攻击2 2、laravel项目部署到linux的时候出现The stream or file "/home/www/storage/logs/laravel.log" could not be opened in append mode 给目录加权限 chmod -R 777 storage 3、Class "Redis"…

ROS无人机开发常见错误

一. Ubuntu 相关 1、SSH远程连接报错 解决方案:终端运行上述图中选中部分,更新一下即可 第一步: 第二步:根据提示输入yes后输入密码即可 第三步:成功后如下图所示 2、解决“E 无法获得锁/ var/lib/apt/lists/ (11 资…