我需要分别对每一列进行分组,并通过分组找出几个度量标准。 假设我有一堆feature列和一个二进制目标列。每个特征都是一个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 |
熊猫回答
我们可以首先使用}
for col in df.columns
对所有列进行迭代,然后使用^{然后我们在这些列上} 。在这个聚合中,我们取target的
GroupBy
,并使用^{sum
和total zeros
。你知道吗最后,我们使用^{} 来连接相邻的每个组。你知道吗
因为性能很重要,在
groupby
之前计数0
值,而不是每个组,所以for count可能是两列的sum
的聚合:相关问题 更多 >
编程相关推荐