【发布时间】:2019-12-21 13:05:57
【问题描述】:
我需要分别对每一列进行分组,然后再分组以找出几个指标。 假设我有一堆特征列和一个二进制目标列。每个特征都是一个 bin(一个字符串)。目标是一个整数列。在这里,为了简单起见,只有 1 和 0。
例子
import pandas as pd
var1 = ['var1_bin1', 'var1_bin2', 'var1_bin2', 'var1_bin3', 'var1_bin4', 'var1_bin4', 'var1_bin4', 'var1_bin5', 'var1_bin5', 'var1_bin5']
var2 = ['var2_bin1', 'var2_bin1', 'var2_bin2', 'var2_bin3', 'var2_bin3', 'var2_bin4', 'var2_bin4', 'var2_bin5', 'var2_bin5', 'var2_bin5']
var3 = ['var3_bin2', 'var3_bin2', 'var3_bin2', 'var3_bin3', 'var3_bin3', 'var3_bin3', 'var3_bin3', 'var3_bin4', 'var3_bin5', 'var3_bin5']
var4 = ['var4_bin1', 'var4_bin1', 'var4_bin2', 'var4_bin2', 'var4_bin4', 'var4_bin4', 'var4_bin4', 'var4_bin4', 'var4_bin4', 'var4_bin4']
target = [1, 0, 0, 1, 1, 1, 0, 0, 0, 0]
df = pd.DataFrame({
'var1' : var1,
'var2' : var2,
'var3' : var3,
'target' : target
})
print(df)
cols = ['var1', 'var2', 'var3', 'var4', 'target']
# need groupby for each column separately:
# For each column, I want to group by categorical elements in column and sum elements from target variable and also count how many zeros are there
for col in cols:
x = df.groupby([col, target])[[target]].sum() #expecting aggregated metrics
print(x)
我所期望的是,作为数据帧的数据帧(或任何更好的方式)的结果,我可以通过以下方式直观地与您交流:
Result representation
var1 | var2 ...
---------------------------- |
bin | sum | total_zeros |
----------------- |
var1_bin1 | 1 | 0 |
var1_bin2 | 0 | 2 |
var1_bin3 | 1 | 0 |
var1_bin4 | 2 | 1 |
var1_bin5 | 0 | 3 |
【问题讨论】:
标签: python pandas numpy dataframe dask