Replace infinite values with per-symbol means
(df: pl.DataFrame)
| 78 | |
| 79 | |
| 80 | def process_replace_inf(df: pl.DataFrame) -> pl.DataFrame: |
| 81 | """Replace infinite values with per-symbol means""" |
| 82 | _df: pl.DataFrame = df.fill_nan(None) |
| 83 | |
| 84 | for name in df.columns[2:]: |
| 85 | mean_values: pl.DataFrame = ( |
| 86 | _df.filter(~pl.col(name).is_infinite()).group_by("vt_symbol").agg( |
| 87 | [pl.col(name).mean().alias("mean")] |
| 88 | ) |
| 89 | ) |
| 90 | |
| 91 | df_with_mean: pl.DataFrame = df.join(mean_values, on="vt_symbol", how="left") |
| 92 | df = df_with_mean.with_columns( |
| 93 | pl.when(pl.col(name).is_infinite()) |
| 94 | .then(pl.col("mean")) |
| 95 | .otherwise(pl.col(name)) |
| 96 | .alias(name) |
| 97 | ).drop("mean") |
| 98 | |
| 99 | return df |
| 100 | |
| 101 | |
| 102 | def process_ts_norm( |