【Python】速度令人夸赞的数据处理模块——Polars


前言

Polars 是一个速度极快的 DataFrames 库。

它拥有以下特性:

1.多线程

2.强大的表达式API

3.查询优化

下面给大家简单介绍一下这个模块的使用方式。
在这里插入图片描述

一、准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。

请选择以下任一种方式输入命令安装依赖:

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install polars

二、Polars 使用介绍

在初始化变量的时候,Polars用起来的方式和Pandas没有太大区别,下面我们定义一个初始变量,后面所有示例都使用这个变量:

import polars as pl
df = pl.DataFrame(
    {
        "A": [1, 2, 3, 4, 5],
        "fruits": ["banana", "banana", "apple", "apple", "banana"],
        "B": [5, 4, 3, 2, 1],
        "cars": ["beetle", "audi", "beetle", "beetle", "beetle"],
    }
)

选择需要展示的数据:

(df.select([
    pl.col("A"),
    "B", # the col part is inferred
    pl.lit("B"), # we must tell polars we mean the literal "B"
    pl.col("fruits"),
]))

效果如下:
在这里插入图片描述


他还能使用正则表达式筛选值并进行求和等操作:

# 正则表达式
(df.select([
    pl.col("^A|B$").sum()
]))
# 或者多选
(df.select([
    pl.col(["A", "B"]).sum()
]))

在这里插入图片描述
Polars支持下面这样复杂且高效的查询及展示:

>> df.sort("fruits").select(
...     [
...         "fruits",
...         "cars",
...         pl.lit("fruits").alias("literal_string_fruits"),
...         pl.col("B").filter(pl.col("cars") == "beetle").sum(),
...         pl.col("A").filter(pl.col("B") > 2).sum().over("cars").alias("sum_A_by_cars"),
...         pl.col("A").sum().over("fruits").alias("sum_A_by_fruits"),
...         pl.col("A").reverse().over("fruits").alias("rev_A_by_fruits"),
...         pl.col("A").sort_by("B").over("fruits").alias("sort_A_by_B_by_fruits"),
...     ]
... )
shape: (5, 8)
┌──────────┬──────────┬──────────────┬─────┬─────────────┬─────────────┬─────────────┬─────────────┐
│ fruits ┆ cars ┆ literal_stri ┆ B ┆ sum_A_by_ca ┆ sum_A_by_fr ┆ rev_A_by_fr ┆ sort_A_by_B │
│ ------ ┆ ng_fruits ┆ --- ┆ rs ┆ uits ┆ uits ┆ _by_fruits │
│ strstr--- ┆ i64 ┆ ------------ │
│ ┆ ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞══════════╪══════════╪══════════════╪═════╪═════════════╪═════════════╪═════════════╪═════════════╡
│ "apple""beetle""fruits"114744           │
│ "apple""beetle""fruits"114733           │
│ "banana""beetle""fruits"114855           │
│ "banana""audi""fruits"112822           │
│ "banana""beetle""fruits"114811           │
└──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘

三、Polars 高级使用

倒序操作,将值倒序后重新放回变量中,起名为xxx_reverse:

(df.select([
pl.all(),
pl.all().reverse().suffix(“_reverse”)
]))

在这里插入图片描述

对所有列求和,并放回变量中,起名为 xxx_sum:

(df.select([
pl.all(),
pl.all().sum().suffix(“_sum”)
]))
在这里插入图片描述
正则也能用于筛选:

predicate = pl.col(“fruits”).str.contains(“^b.*”)

(df.select([
predicate
]))

在这里插入图片描述

在设定一个新列的时候,甚至可以根据条件来给不同的行设定值:

(df.select([
“fruits”,
“B”,
pl.when(pl.col(“fruits”) == “banana”).then(pl.col(“B”)).otherwise(-1).alias(“b”)
]))

在这里插入图片描述

fold 函数很强大,它能在列上执行操作,获得最快的速度,也就是矢量化执行:

df = pl.DataFrame({
        "a": [1, 2, 3],
        "b": [10, 20, 30],
    }
)

out = df.select(
    pl.fold(acc=pl.lit(0), f=lambda acc, x: acc + x, exprs=pl.col("*")).alias("sum"),
)
print(out)
# shape: (3, 1)
# ┌─────┐
# │ sum │
# │ --- │
# │ i64 │
# ╞═════╡
# │ 11 │
# ├╌╌╌╌╌┤
# │ 22 │
# ├╌╌╌╌╌┤
# │ 33 │
# └─────┘

总结

Polars 还有许多其他有用的特性,大家感兴趣的可以访问他们的用户手册进行阅读和学习:

https://pola-rs.github.io/polars-book/user-guide

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,我无法找到关于"python polars"的具体信息。但是,根据您提供的信息,我可以为您介绍一下Python中的pandas库,它是一个用于数据分析和处理的强大工具。 Pandas是一个开源的Python库,提供了高性能、易于使用的数据结构和数据分析工具。它主要用于处理和分析结构化数据,例如表格数据。Pandas提供了两种主要的数据结构:Series和DataFrame。 Series是一维的标记数组,类似于带有标签的数组或列表。它可以包含任何数据类型,并且可以通过标签进行索引。 DataFrame是一个二维的表格数据结构,类似于电子表格或SQL表。它由行和列组成,每列可以包含不同的数据类型。DataFrame可以从多种数据源创建,例如CSV文件、Excel文件、数据库查询等。 使用Pandas,您可以执行各种数据操作,例如数据清洗、数据转换、数据筛选、数据聚合等。它还提供了强大的数据可视化功能,可以帮助您更好地理解和分析数据。 以下是一个使用Pandas的示例代码: ```python import pandas as pd # 创建一个DataFrame data = {'Name': ['John', 'Emma', 'Mike'], 'Age': [25, 28, 30], 'City': ['New York', 'London', 'Paris']} df = pd.DataFrame(data) # 打印DataFrame print(df) # 对数据进行筛选和操作 filtered_df = df[df['Age'] > 25] sorted_df = df.sort_values('Name') # 打印筛选和排序后的结果 print(filtered_df) print(sorted_df) ``` 这是一个简单的示例,展示了如何创建DataFrame、对数据进行筛选和排序。您可以根据自己的需求使用Pandas进行更复杂的数据操作和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐浪老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值