Как рассчитать Z-показатели для списка значений в фрейме данных Polars

Я работаю с DataFrame Polars в Python, где у меня есть столбец, содержащий списки значений. Мне нужно рассчитать Z-показатели для каждого списка, используя заранее вычисленные значения среднего и стандартного отклонения. Вот образец моего DataFrame:

import polars as pl

data = {
    "transcript_id": ["ENST00000711184.1"],
    "OE": [[3.933402, 1.057907, None, 3.116513]],
    "mean_OE": [11.882091],
    "std_OE": [3.889974],
}

df_human = pl.DataFrame(data)

Для каждого списка в столбце OE я хочу вычесть среднее значение (mean_OE) и разделить на стандартное отклонение (std_OE), чтобы получить Z-показатели. Я также хочу обрабатывать значения «Нет» в списках, оставив их как «Нет» в списке Z-показателей.

Как правильно применить расчет Z-показателя к каждому списку, сохранив при этом значения «Нет»?

Заранее спасибо за любые рекомендации!

mean_OE не содержит среднего значения элементов списка. Следует ли использовать столбцы mean_OE/std_OE для расчета z-показателя или следует применить обычное определение?
Hericks 21.08.2024 13:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вас интересует обычное определение Z-показателя (с использованием сводной статистики фактических данных списка), вы можете просто использовать pl.Expr.list.eval следующим образом.

df_human.select(
    pl.col("OE").list.eval((pl.element() - pl.element().mean()) / pl.element().std()).alias("z_OE")
)
shape: (1, 1)
┌─────────────────────────────────────┐
│ OE                                  │
│ ---                                 │
│ list[f64]                           │
╞═════════════════════════════════════╡
│ [1.230795, -1.6447, null, 0.413906] │
└─────────────────────────────────────┘

Если вы хотите вычислить Z-показатель явно, используя столбцы mean_OE и std_OE, в идеале вы можете использовать их внутри pl.Expr.list.eval. Однако ссылка на «внешний» столбец в контексте оценки списка в настоящее время еще не поддерживается.

Вместо этого вы можете использовать технику взрыва и взрыва , как описано здесь.

z_score_expr = ((pl.col("OE").explode() - pl.col("mean_OE")) / pl.col("std_OE"))

df_human.with_columns(
    z_score_expr.implode().over(pl.int_range(pl.len()))
)
shape: (1, 1)
┌─────────────────────────────────────────┐
│ OE                                      │
│ ---                                     │
│ list[f64]                               │
╞═════════════════════════════════════════╡
│ [-2.043378, -2.782585, null, -2.253377] │
└─────────────────────────────────────────┘

в вашем подходе list.eval вы забыли разделить на станд.

Dean MacGregor 21.08.2024 22:00

@DeanMacGregor Хороший улов. Я отредактировал вопрос.

Hericks 22.08.2024 17:51

Другие вопросы по теме