Polars GroupBy, игнорировать NaN при вычислении среднего значенияPython

Программы на Python
Ответить
Anonymous
 Polars GroupBy, игнорировать NaN при вычислении среднего значения

Сообщение Anonymous »

Как лучше всего игнорировать NaN при вычислении среднего значения в Polars? Начиная с версии Polars v0.19.19, значение pl.Expr.mean по умолчанию не игнорирует NaN.
Пример:

Код: Выделить всё

import polars as pl

test_data = pl.DataFrame(
{
"group": ["A", "A", "B", "B"],
"values": [1.0, np.nan, 2.0, 3.0]

}
)
test_data.group_by("group").agg(pl.col("values").mean())
результат

Код: Выделить всё

group values
"A"    NaN
"B"    2.5
По сравнению с пандами:

Код: Выделить всё

import pandas as pd

test_data = pd.DataFrame(
{
"group": ["A", "A", "B", "B"],
"values": [1.0, np.nan, 2.0, 3.0]

}
)
test_data.groupby("group").mean()
результат

Код: Выделить всё

group values
"A"    1.0
"B"    2.5
Лучшая альтернатива, которую я могу придумать, — это использовать поляры pl.Expr.map_elements и np.nanmean как таковые:

Код: Выделить всё

test_data = pl.DataFrame(
{
"group": ["A", "A", "B", "B"],
"values": [1.0, np.nan, 2.0, 3.0]

}
)
test_data.group_by("group").agg(
pl.col("values").map_elements(lambda x: np.nanmean(x.to_numpy()))
)
Однако API Polars не рекомендует использовать его, если это возможно, из-за недостаточной скорости. Существуют ли более быстрые способы вычисления среднего значения, игнорируя NaN?

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

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

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

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

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

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