Как запустить пользовательскую регрессию в кадрах данных/больших кадрах bigquery (с использованием удаленных функций)Python

Программы на Python
Anonymous
Как запустить пользовательскую регрессию в кадрах данных/больших кадрах bigquery (с использованием удаленных функций)

Сообщение Anonymous »

Я не уверен, как запустить пользовательскую регрессию (с использованием пакета pyfixest) с несколькими столбцами, используя кадры данных bigquery, и добавить остаток регрессии в качестве нового столбца. Я не могу понять, как передать полный фрейм данных удаленным функциям. В предыдущем ответе предлагалось использовать bpd.Series, но это не работает. Кроме того, функция pyfixest требует в качестве входных данных кадр данных pandas.
Я использую следующую удаленную функцию. Эта функция преобразует bpd.Series в bpd.DataFrame, а затем в df pandas.

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

@bpd.remote_function(bpd.Series, int, reuse=False, packages=["pyfixest","pandas"])
def get_residuals(input_df):
import pyfixest as pf
import pandas as pd

input_df = input_df.to_frame().to_pandas()

m1 = pf.feols("spotify_streams ~ song_age_days | isrc", data=input_df)
return m1.resid()

#return input_df["spotify_streams"]
Затем я применяю эту функцию к исходному фрейму данных (который имеет столбцы «isrc», «spotify_streams», «song_age_days»)

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

df = bpd.read_gbq(sql, use_cache = False) #Get the data here, works fine.

df["residual"] = df[
["spotify_streams","song_age_days","isrc"]
].apply(get_residuals, axis=1)
Но тогда это терпит неудачу с

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

NameError: `song_age_days` is not present in the dataset or evaluation context.
Я также пробовал использовать только input_df = input_df.to_pandas(), но тогда это не удалось

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

 File \"\", line 9, in get_residuals\n  File \"/layers/google.python.pip/pip/lib/python3.10/site-packages/pandas/core/generic.py\", line 6204, in __getattr__\n    return object.__getattribute__(self, name)\nAttributeError: 'Series' object has no attribute 'to_pandas'\n"}
.
хотя в bpd.Series должна быть команда .to_pandas().

Подробнее здесь: https://stackoverflow.com/questions/789 ... emote-func

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