У меня есть функция, использующая полярные выражения для расчета стандартного отклонения остатков от линейной регрессии (любезно предоставлено этим сообщением).
Теперь я хотел бы применить эту функцию, используя скользящее окно к кадру данных. Мои подходы, описанные ниже, терпят неудачу, потому что я не знаю, как передать два столбца в качестве аргументов функции, посколькуroll_map() применяется к Expr.
Есть ли способ сделать это непосредственно в Polars или мне нужно использовать обходной путь с Pandas? Спасибо за вашу поддержку! (кажется, я упускаю что-то очевидное...)
import polars as pl
def ols_residuals_std(x: pl.Expr, y: pl.Expr) -> pl.Expr:
# Calculate linear regression residuals and return the standard deviation thereof
x_center = x - x.mean()
y_center = y - y.mean()
beta = x_center.dot(y_center) / x_center.pow(2).sum()
e = y_center - beta * x_center
return e.std()
df = pl.DataFrame({'a': [45, 76, 4, 88, 66, 5, 24, 72, 93, 87, 23, 40],
'b': [77, 11, 56, 43, 61, 25, 63, 7, 66, 17, 64, 75]})
# Applying the function over the full length - works
df = df.with_columns(ols_residuals_std(pl.col('a'), pl.col('b')).alias('e_std'))
df.with_columns(pl.col('a').rolling_map(ols_residuals_std(pl.col('a'), pl.col('b')), window_size=4, min_periods=1).alias('e_std_win'))
# PanicException: python function failed: PyErr { type: , value: TypeError("'Expr' object is not callable"), traceback: None }
df.with_columns(pl.col('a', 'b').rolling_map(ols_residuals_std(), window_size=4, min_periods=1).alias('e_std_win'))
# TypeError: ols_residuals_std() missing 2 required positional arguments: 'x' and 'y'
Подробнее здесь: https://stackoverflow.com/questions/774 ... -input-col
Как применитьroll_map() в Polars для функции, которая использует несколько входных столбцов ⇐ Python
Программы на Python
1762021102
Anonymous
У меня есть функция, использующая полярные выражения для расчета стандартного отклонения остатков от линейной регрессии (любезно предоставлено этим сообщением).
Теперь я хотел бы применить эту функцию, используя [b]скользящее окно[/b] к кадру данных. Мои подходы, описанные ниже, терпят неудачу, потому что я не знаю, как передать два столбца в качестве аргументов функции, посколькуroll_map() применяется к Expr.
Есть ли способ сделать это непосредственно в Polars или мне нужно использовать обходной путь с Pandas? Спасибо за вашу поддержку! (кажется, я упускаю что-то очевидное...)
import polars as pl
def ols_residuals_std(x: pl.Expr, y: pl.Expr) -> pl.Expr:
# Calculate linear regression residuals and return the standard deviation thereof
x_center = x - x.mean()
y_center = y - y.mean()
beta = x_center.dot(y_center) / x_center.pow(2).sum()
e = y_center - beta * x_center
return e.std()
df = pl.DataFrame({'a': [45, 76, 4, 88, 66, 5, 24, 72, 93, 87, 23, 40],
'b': [77, 11, 56, 43, 61, 25, 63, 7, 66, 17, 64, 75]})
# Applying the function over the full length - works
df = df.with_columns(ols_residuals_std(pl.col('a'), pl.col('b')).alias('e_std'))
df.with_columns(pl.col('a').rolling_map(ols_residuals_std(pl.col('a'), pl.col('b')), window_size=4, min_periods=1).alias('e_std_win'))
# PanicException: python function failed: PyErr { type: , value: TypeError("'Expr' object is not callable"), traceback: None }
df.with_columns(pl.col('a', 'b').rolling_map(ols_residuals_std(), window_size=4, min_periods=1).alias('e_std_win'))
# TypeError: ols_residuals_std() missing 2 required positional arguments: 'x' and 'y'
Подробнее здесь: [url]https://stackoverflow.com/questions/77433576/how-to-apply-rolling-map-in-polars-for-a-function-that-uses-multiple-input-col[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия