在数据框中所有列的2行之间进行ttest测试

问题描述

我编写了以下函数来并行计算所有熊猫列中两个类别之间的统计检验-

我能够使用dask提取类别,但是我需要计算并使用熊猫来获得ttest(或其他统计测试) 我想知道是否有人对如何使用dask不仅运行分类而且对每列并行进行t检验有一个想法) 下面是我的代码

import numpy as np
import pandas as pd
import dask
from scipy.stats import ttest_ind 
from scipy.stats import ttest_rel 
from scipy.stats import kstest 

df = pd.DataFrame({
'var1'      : np.random.randint(0,1000000,1000000),'var2'      : np.random.randint(0,'var3'      : np.random.randint(0,'Category'   : np.random.randint(0,2,1000000) 
})


custom_list = dask.dataframe.Aggregation('custom_test',chunk= lambda s: s.apply(lambda x:list(x)),agg = lambda s0 :s0.obj.groupby(level=list(range(s0.obj.index.nlevels))).sum(),finalize= lambda s1 :s1.apply(lambda x: x))

def testCustom(x,test=kstest,**args):
    x=list(x)
    return test(x[0],x[1])

def diffDiffrentialCategory(df,catcol='Category',test=ttest_ind,pVal=0.05,chunksize=10000,**args):
    ddf=dask.dataframe.from_pandas(df,chunksize=chunksize)

    df1=ddf.groupby(catcol).aggregate(custom_list).compute()
    # I'd like to work directly on df1=ddf.groupby(catcol).aggregate(custom_list) w/o compute()
    df1=pd.DataFrame.from_records(df1.apply(testCustom,test=test)).set_index(df1.columns).rename(columns={0:'statistic',1:'p-value'})
    return df1[df1['p-value']<=pVal]

欣赏帮助/建议

Jano

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)