【问题标题】:Find event and non-event rate using pandas使用 pandas 查找事件和非事件率
【发布时间】:2022-01-24 14:10:34
【问题描述】:

我有一个如下所示的数据框

import numpy as np
import pandas as pd
np.random.seed(100)


df = pd.DataFrame({'grade': np.random.choice(list('ABCD'),size=(20)),
                   'dash': np.random.choice(list('PQRS'),size=(20)),
                   'dumeel': np.random.choice(list('QWER'),size=(20)),
                   'dumma': np.random.choice((1234),size=(20)),
                   'target': np.random.choice([0,1],size=(20))
})

我想做下面的事情

a) event rate - 计算每个输入分类列中每个唯一值的 1s(来自目标列)的出现百分比

b) non event rate - 计算每个输入分类列中每个唯一值的 0s(来自目标列)的出现百分比

我尝试了以下

input_category_columns = df.select_dtypes(include='object')
df_rate_calc = pd.DataFrame()
for ip in input_category_columns:
    feature,target = ip,'target'
    df_rate_calc['col_name'] = (pd.crosstab(df[feature],df[target],normalize='columns'))

我想在一百万行上执行此操作,如果有任何有效的方法,那真的很有帮助

我希望我的输出如下所示。我只显示了两列,但我想为所有分类列生成此输出

【问题讨论】:

    标签: python pandas dataframe numpy series


    【解决方案1】:

    这是一种方法:

    • 选择分类列 (cols)
    • Melttarget 作为 id 变量和 cols 作为值变量的数据框
    • 对数据帧进行分组并使用value_counts 计算频率
    • Unstack 重塑数据框
    cols = df.select_dtypes('object')
    df_out = (
        df.melt('target', cols)
          .groupby(['variable', 'target'])['value']
          .value_counts(normalize=True)
          .unstack(1, fill_value=0)
    )
    

    print(df_out)
    
    target            0    1
    variable value          
    dash     P      0.4  0.3
             Q      0.2  0.3
             R      0.2  0.1
             S      0.2  0.3
    dumeel   E      0.2  0.2
             Q      0.1  0.0
             R      0.4  0.6
             W      0.3  0.2
    grade    A      0.4  0.2
             B      0.0  0.2
             C      0.4  0.3
             D      0.2  0.3
    

    【讨论】:

    • 一如既往地感谢 Shubham。赞成和接受
    • 我想我会在这里分享这个包链接 - gnpalencia.org/optbinning/tutorials/tutorial_binary.html。这或多或少是我想要的,但略有不同。但感觉可能对读者有用。所以,放在这里
    • 这也计算事件率和非事件率
    猜你喜欢
    • 2020-09-04
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多