标签: python-polars

在 Python 中使用 Rust Polars 连接数据框

我正在尝试polars并想了解为什么使用polarspandas在特定示例上使用慢:

import pandas as pd
import polars as pl

n=10_000_000
df1 = pd.DataFrame(range(n), columns=['a'])
df2 = pd.DataFrame(range(n), columns=['b'])
df1p = pl.from_pandas(df1.reset_index())
df2p = pl.from_pandas(df2.reset_index())

# takes ~60 ms
df1.join(df2)

# takes ~950 ms
df1p.join(df2p, on='index')
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas rust-polars python-polars

5
推荐指数
1
解决办法
4060
查看次数

如何在 Rust 和 Python 之间交换 Polars-DataFrame

我想编写一个Python extensionusing RustwithCtypesPyo3以获得比本机 Python 更好的性能。但是如何在 Rust 和 Python 之间交换数据Polars DataFrame或类型等数据呢?ndarray

python numpy rust pyo3 python-polars

5
推荐指数
0
解决办法
1597
查看次数

是否有与 Spark Pandas UDF 等效的 Apache Arrow

Spark 提供了几种不同的方法来实现使用和返回 Pandas DataFrame 的 UDF。我目前正在使用联合版本,该版本采用两个(联合分组)Pandas DataFrame 作为输入并返回第三个。

为了在 Spark DataFrame 和 Pandas DataFrame 之间进行高效转换,Spark 使用 Apache Arrow 内存布局,但是仍然需要在 Arrow 和 Pandas 之间进行转换。我真的很想直接访问 Arrow 数据,因为这就是我最终处理 UDF 中的数据的方式(使用Polars)。

来时从 Spark -> Arrow -> Pandas -> Arrow (Polars) 走,返回时相反,似乎很浪费。

user-defined-functions pandas apache-spark apache-arrow python-polars

5
推荐指数
1
解决办法
634
查看次数

在 Python 中使用 Polars 读取/写入 Parquet 文件时可以指定架构吗?

在Python中使用Polars读取CSV文件时,我们可以使用参数dtypes来指定要使用的模式(对于某些列)。我想知道我们在读取或写入 Parquet 文件时可以做同样的事情吗?我试图指定dtypes参数,但它不起作用。

我有一些从 PySpark 生成的 Parquet 文件,并且想要将这些 Parquet 文件加载到 Rust 中。Rust 需要无符号整数,而 Spark/PySpark 没有无符号整数并将有符号整数输出到 Parquet 文件中。为了让事情变得更简单,我想在将 Parquet 文件加载到 Rust 之前转换它们的列类型。我知道有几种不同的方法可以实现这一点(无论是在 pandas 还是在 Polars 中),但我想知道是否有简单有效的方法可以使用 Polars 来实现此目的。

我在 Python 中使用极坐标转换列类型的代码如下。

import polars as pl

...
df["id0"] = df.id0.cast(pl.datatypes.UInt64)
Run Code Online (Sandbox Code Playgroud)

python schema dataframe rust python-polars

5
推荐指数
1
解决办法
4768
查看次数

检索极坐标的行号(索引)的推荐方法是什么?

我知道 Polars 不支持设计索引,所以df.filter(expr).index不是一个选项,我能想到的另一种方法是在应用任何过滤器之前添加一个新列,不确定这是否是在 Polars 中这样做的最佳方法

df.with_column(pl.Series('index', range(len(df))).filter(expr).index
Run Code Online (Sandbox Code Playgroud)

python dataframe data-science python-polars

5
推荐指数
1
解决办法
7719
查看次数

Rust Polars:是否可以将列表列分解为多个列?

我有一个返回列表类型列的函数。因此,我的专栏之一是一个列表。我想将此列表列变成多列。例如:

\n
use polars::prelude::*;\nuse polars::df;\n\nfn main() {\n    let s0 = Series::new("a", &[1i64, 2, 3]);\n    let s1 = Series::new("b", &[1i64, 1, 1]);\n    let s2 = Series::new("c", &[Some(2i64), None, None]);\n    // construct a new ListChunked for a slice of Series.\n    let list = Series::new("foo", &[s0, s1, s2]);\n\n    // construct a few more Series.\n    let s0 = Series::new("Group", ["A", "B", "A"]);\n    let s1 = Series::new("Cost", [1, 1, 1]);\n    let df = DataFrame::new(vec![s0, s1, list]).unwrap();\n\n    dbg!(df);\n
Run Code Online (Sandbox Code Playgroud)\n

在这个阶段 DF 看起来像这样:

\n
\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 Group \xe2\x94\x86 …
Run Code Online (Sandbox Code Playgroud)

explode dataframe rust rust-polars python-polars

5
推荐指数
1
解决办法
4794
查看次数

使用 Polars 从 S3 并行读取许多小 json 文件

我看过以下极地文档:
https://pola-rs.github.io/polars-book/user-guide/multiple_files/intro.html#reading-and-processing-in-parallel

有没有办法创建一个查询计划来从 S3 存储桶读取许多小 json 文件?

这类似于 Spark 从单个 S3 前缀(路径)读取许多小 json 文件或 csv 文件的方式:

spark.read.format("json").load("s3a://my-bucket/path/to/smallfiles/*.json")
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 dataframe python-polars

5
推荐指数
0
解决办法
847
查看次数

极坐标对列表列中的元素进行计数

我的数据框包含带有列表元素的b列,我需要创建c列来计算列表中每一行的元素数量。这是 Pandas 中的玩具示例:

import pandas as pd

df = pd.DataFrame({'a': [1,2,3], 'b':[[1,2,3], [2], [5,0]]})

    a   b
0   1   [1, 2, 3]
1   2   [2]
2   3   [5, 0]

df.assign(c=df['b'].str.len())

    a   b           c
0   1   [1, 2, 3]   3
1   2   [2]         1
2   3   [5, 0]      2

Run Code Online (Sandbox Code Playgroud)

这是我在 Polars 中的等效项:

import polars as pl

dfp = pl.DataFrame({'a': [1,2,3], 'b':[[1,2,3], [2], [5,0]]})

dfp.with_columns(pl.col('b').apply(lambda x: len(x)).alias('c'))

Run Code Online (Sandbox Code Playgroud)

我有一种感觉,这.apply(lambda x: len(x))不是最佳状态。

在 Polars 中有更好的方法吗?

python pandas python-polars

5
推荐指数
1
解决办法
2145
查看次数

Python Polars:如何在不使用 pandas 的情况下将字典列表转换为极坐标数据框

我有一个这样的字典列表:

[{"id": 1, "name": "Joe", "lastname": "Bloggs"}, {"id": 2, "name": "Bob", "lastname": "Wilson"}]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为极坐标数据框。我尝试过通过 pandas 进行操作,但如果可能的话,我想避免使用 pandas。

有什么想法吗?

python python-polars

5
推荐指数
1
解决办法
2597
查看次数

Polars DataFrame 保存到 sql

有没有办法将 Polars DataFrame 保存到数据库中,例如 MS SQL?

\n

ConnectorX 库似乎没有这个选项。

\n

rust-polars python-polars

5
推荐指数
1
解决办法
3151
查看次数