Python数据预处理之---统计学的t检验,卡方检验以及均值,中位数等

本文介绍了Python数据预处理中如何运用统计学方法,包括t检验和卡方检验。对于连续属性,首先检查正态分布,然后进行t检验以验证方差齐次性。对于非正态分布的连续属性,则采用Mann-Whitney检验。对于分类变量,通过三种卡方检验(Pearson、校准和精准卡方)进行分析。文章提供了详细代码和参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python数据预处理过程:利用统计学对数据进行检验,对连续属性检验正态分布,针对正态分布属性继续使用t检验检验方差齐次性,针对非正态分布使用Mann-Whitney检验。针对分类变量进行卡方检验(涉及三种卡方的检验:Pearson卡方,校准卡方,精准卡方)等。

不懂卡方的原理可以参考:卡方检验–MBA智库
卡方检验具体的使用准则

# 四格表卡方检验用于进行两个率或两个构成比的比较。
# 要求样本含量应大于40且每个格子中的理论频数不应小于5。
# 当样本含量大于40但理论频数有小于5的情况时卡方值需要校正,当样本含量小于40时只能用确切概率法计算概率。
# (1)所有的理论数T≥5并且总样本量n≥40,用Pearson卡方进行检验。
# (2)如果理论数T<5但T≥1,并且总样本量n≥40,用连续性校正的卡方进行检验。
# (3)如果有理论数T<1或n<40,则用Fisher’s检验。

具体的代码中注释很详细:

def output_statistics_info_self(data_df, category_feats, continue_feats, target,logger,nan_value=-1,info_more=True):
    '''
    Function:输出最全的数据的描述信息
    Parameters:
        data_df:DataFrame the source data
        category_feats:list
        continue_feats:list
        target:the classification target,as the y
        nan_value:default -1,represent the nan value need to be filled
        info_more:default True,output the whole info;False:output the part info for client and paper
    Return:
        DataFrame
    '''
    sample_size = data_df.shape[0]
    # 判断target是二分类还是多分类(三分类及其以上)
    target_values=list(data_df[target].value_counts().index)
    logger.info('%s取值%s'%(target,target_values))
    task_type=len(target_values)
    total_describe_list=[]

    # 警告:做单因素分析之前必须要异常值检查,排出非数字的异常值,否则报错
    # data_df[continue_feats]=data_df[continue_feats].applymap(float)
    # data_df[category_feats]=data_df[category_feats].applymap(float)

    # 针对二分类任务
    if task_type==2:
        # 针对连续属性
        # 先检验连续属性是否是正态分布其次再检验是否方差齐次,才能使用独立t检验
        for col in continue_feats:
            logger.info('------%s--------'%col)
            col_series=data_df[data_df[col]!=nan_value][col]
            col_count=col_series.count()

            vals=[col,'连续',col_count]
            # 检验连续属性是否符合正态分布
            p_value=norm_distribution_test(sample_size,col_series)
            # 如果p_value>0.05 正态分布,使用独立t检验,检验连续属性在两组样本方差相同的情况下它们的均值是否相同
            condition0=(data_df[target] == target_values[0]) & (data_df[col] != nan_value)
            condition1=(data_df[target] == target_values[1]) & (data_df[col] != nan_value)

            if p_value > 0.05:
                logger.info('%s符合正态分布'%col)
                # 使用levene检验方差齐次
                stat,pval=levene(data_df[condition0][col].values,data_df[condition1][col].values)
                if pval>0.05:
                    # p值大于0.05,认为两总体具有方差齐性。
                    t_stat, pvalue = ttest_ind(data_df[condition0][col].values,data_df[condition1][col].values,
                                equal_var=True)
                else:
                    # 两总体方差不齐
                    t_stat, pvalue = ttest_ind(data_df[condition0][col].values,data_df[condition1][col].values,
             
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值