Производительность Polars map_elements для пользовательских функцийPython

Программы на Python
Ответить
Anonymous
 Производительность Polars map_elements для пользовательских функций

Сообщение Anonymous »

Мне понравилось значительное ускорение Polars по сравнению с Pandas, за исключением одного случая. Я новичок в Polars, так что это может быть просто мое неправильное использование. В любом случае, вот игрушечный пример:
к одному столбцу мне нужно применить пользовательскую функцию, в моем случае это синтаксический анализ из библиотеки вероятных людей (https://github.com/datamade/probablepeople), но проблема общая.
Обычные панды применяются имеют такую же среду выполнения, как и Polars, но панды с параллельным_применением из (https://github.com/nalepae/pandarallel) получает ускорение пропорционально количеству ядер.
Мне кажется, что Polars использует только одно ядро для пользовательских функций, или я что-то упускаю?
Если я правильно использую Polars, возможно, есть возможность создать такой инструмент, как pandaralell для Polars?
!pip install probablepeople
!pip install pandarallel

import pandas as pd
import probablepeople as pp
import polars as pl
from pandarallel import pandarallel

AMOUNT = 1_000_000
#Pandas:
df = pd.DataFrame({'a': ["Mr. Joe Smith"]})
df = df.loc[df.index.repeat(AMOUNT)].reset_index(drop=True)

df['b'] = df['a'].apply(pp.parse)

#Pandarallel:
pandarallel.initialize(progress_bar=True)
df['b_multi'] = df['a'].parallel_apply(pp.parse)

#Polars:
dfp = pl.DataFrame({'a': ["Mr. Joe Smith"]})
dfp = dfp.select(pl.all().repeat_by(AMOUNT).explode())

dfp = dfp.with_columns(pl.col('a').map_elements(pp.parse).alias('b'))



Подробнее здесь: https://stackoverflow.com/questions/747 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»