我有一个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 │
└─────┴──────────┴──────────┘
(您的顺序可能不同)