Я пытаюсь выполнить некоторые агрегации, хотя мне нравятся поляры, но есть определенные вещи, которые я не могу выполнить. Вот мой подход и вопрос для справки.
почему медиана является допустимым значением, а среднее - нет?
возможный ответ: это потому, что медиана рассчитывается путем сортировки и выбора среднего значения, и поскольку в этом случае центральное значение не равно нулю, следовательно, оно действительно (не уверен, что причина в этом)
print(data.select(pl.col('m').median())) ## line 1
print(data.select(pl.col('m').mean())) ## line 2
Если я заменю np.nan на None, вычисление среднего значения работает нормально в «строке 2» приведенного выше кода, почему?
почему это не работает? Я получаю сообщение об ошибке вычислений: расширение более чем на один столбец не разрешено. Что это на самом деле означает? По сути, я хотел отфильтровать любые строки, отсутствующие в обоих столбцах.
Спасибо, что прочитали вопрос и ответили. Я не хочу помещать дублирующую запись в SO. Я понимаю правила, поэтому, пожалуйста, дайте мне знать, если это в каком-либо смысле дубликаты. Я бы с радостью удалил их. Но я не смог решить некоторые из них или написать решение, которое могло быть не очень хорошим. Еще раз спасибо!!!
Изменить:
работает версия Python: '3.10.9'
работает версия Polars: '0.20.31'
Я пытаюсь выполнить некоторые агрегации, хотя мне нравятся поляры, но есть определенные вещи, которые я не могу выполнить. Вот мой подход и вопрос для справки. [code]import polars as pl import polars.selectors as cs
import numpy as np
data = pl.DataFrame({'x': ['a', 'b', 'a', 'b', 'a', 'a', 'a', 'b', 'a'], 'y': [2, 3, 4, 5, 6, 7, 8, 9, 10], 'z': [4, np.nan, np.nan, 8,1, 1, 3, 4, 0], 'm' : [np.nan, 8, 1, np.nan, 3, 4, 8, 7, 1]}) [/code] У меня есть кадр данных, как указано выше. Вот мои вопросы и соответствующая попытка. [list] [*]Как вычислить несколько сводок по нескольким столбцам (я получаю ошибку дублирования столбцов, как это исправить?) [/list] Попытка: [code]data.group_by('x').agg(pl.all().mean(), pl.all().sum())
[/code] [list] [*]почему медиана является допустимым значением, а среднее - нет? возможный ответ: это потому, что медиана рассчитывается путем сортировки и выбора среднего значения, и поскольку в этом случае центральное значение не равно нулю, следовательно, оно действительно (не уверен, что причина в этом) [/list] [code]print(data.select(pl.col('m').median())) ## line 1 print(data.select(pl.col('m').mean())) ## line 2
[/code] [list] [*]Если я заменю np.nan на None, вычисление среднего значения работает нормально в «строке 2» приведенного выше кода, почему?
[*]почему это не работает? Я получаю сообщение об ошибке вычислений: расширение более чем на один столбец не разрешено. Что это на самом деле означает? По сути, я хотел отфильтровать любые строки, отсутствующие в обоих столбцах.
[/list] [code] data.filter(pl.col(['z']).is_nan() | pl.col(['m']).is_nan()) [/code] [list] [*]Как заменить NaN в нескольких столбцах за один раз, я написал этот код, и он тоже работает, но он неуклюжий, есть ли лучший способ? [/list] [code]mean_impute = np.nanmean(data.select(pl.col(['z', 'm'])).to_numpy(), axis=0)
data.with_columns(z = replace_na(data, 'z', 0), m = replace_na(data, 'm', 1))
[/code] Спасибо, что прочитали вопрос и ответили. Я не хочу помещать дублирующую запись в SO. Я понимаю правила, поэтому, пожалуйста, дайте мне знать, если это в каком-либо смысле дубликаты. Я бы с радостью удалил их. Но я не смог решить некоторые из них или написать решение, которое могло быть не очень хорошим. Еще раз спасибо!!! Изменить: работает версия Python: '3.10.9' работает версия Polars: '0.20.31'