在Python polar中获取每个组的相关性



我有一个pandas DataFramedf:

d = {'era': ["a", "a", "b","b","c", "c"], 'feature1': [3, 4, 5, 6, 7, 8], 'feature2': [7, 8, 9, 10, 11, 12], 'target': [1, 2, 3, 4, 5 ,6]}
df = pd.DataFrame(data=d)

我想对每个era应用feature_cols = ['feature1', 'feature2']TARGET_COL = 'target'之间的相关性:

corrs_split = (
training_data
.groupby("era")
.apply(lambda d: d[feature_cols].corrwith(d[TARGET_COL]))
)

我一直在尝试用极地完成这项工作,但我无法获得极地数据框架,其中包含每个不同era的列和每个feature的相关性。我得到的最大值是一个单列,计算了所有的相关性,但没有era作为索引,也没有被feature区分。

下面是与该代码等价的极地代码。您可以通过组合groupby()agg()来完成此操作。

import polars as pl
d = {'era': ["a", "a", "b","b","c", "c"], 'feature1': [3, 4, 5, 6, 7, 8], 'feature2': [7, 8, 9, 10, 11, 12], 'target': [1, 2, 3, 4, 5 ,6]}
df = pl.DataFrame(d)
feature_cols = ['feature1', 'feature2']
TARGET_COL = 'target'
agg_cols = []
for feature_col in feature_cols:
agg_cols += [pl.pearson_corr(feature_col, TARGET_COL)]
print(df.groupby("era").agg(agg_cols))

输出:

shape: (3, 3)
┌─────┬──────────┬──────────┐
│ era ┆ feature1 ┆ feature2 │
│ --- ┆ ---      ┆ ---      │
│ str ┆ f64      ┆ f64      │
╞═════╪══════════╪══════════╡
│ a   ┆ 1.0      ┆ 1.0      │
├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ c   ┆ 1.0      ┆ 1.0      │
├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ b   ┆ 1.0      ┆ 1.0      │
└─────┴──────────┴──────────┘

(您的顺序可能不同)

最新更新