对Pandas数据帧进行t检验,并生成新的p值矩阵

2024-06-23 03:05:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个包含7列的数据帧。在

df_a
df_b
df_c
df_a.head()

  VSPD1_perc  VSPD2_perc  VSPD3_perc  VSPD4_perc  VSPD5_perc  VSPD6_perc  \
0          NaN         NaN         NaN         NaN         NaN         NaN   
3     0.189588    0.228052    0.268460    0.304063    0.009837           0   
5     0.134684    0.242556    0.449054    0.168816    0.004890           0   
9     0.174806    0.232150    0.381936    0.211108    0.000000           0   
11         NaN         NaN         NaN         NaN         NaN         NaN   

    VSPD7_perc  
0          NaN  
3            0  
5            0  
9            0  
11         NaN 

我的目标是生成一个矩阵或一个数据帧,用t检验得到的p值,并用df_a逐列测试数据帧df_b和df_c。即测试df_b和df_c中的第1列,对照df_a中的第1列。 我想用数据帧(df_a)作为标准,对其进行统计t检验。 我在statsmodels中找到了统计检验(统计测试(x1,x2)),但我需要帮助从测试中的p值构造矩阵。 有人知道怎么做吗。。。在


Tags: 数据目标df矩阵nanhead测试数据perc
1条回答
网友
1楼 · 发布于 2024-06-23 03:05:47

撇开适当的NaN管理不谈,只需t, p = scipy.stats.ttest_ind(df_a.dropna(axis=0), df_b.dropna(axis=0))就可以做到。在

参见演示:

>>> import pandas as pd
>>> import scipy.stats
>>> import numpy as np
>>> df_a = pd.read_clibpoard()
>>> df_b = df_a + np.random.randn(5, 7) 
>>> df_c = df_a + np.random.randn(5, 7) 
>>> _, p_b = scipy.stats.ttest_ind(df_a.dropna(axis=0), df_b.dropna(axis=0))
>>> _, p_c = scipy.stats.ttest_ind(df_a.dropna(axis=0), df_c.dropna(axis=0))
>>> pd.DataFrame([p_b, p_c], columns = df_a.columns, index = ['df_b', 'df_c'])
      VSPD1_perc  VSPD2_perc  VSPD3_perc  VSPD4_perc  VSPD5_perc  VSPD6_perc  \
df_b    0.425286    0.987956    0.644236    0.552244    0.432640    0.624528
df_c    0.947182    0.911384    0.189283    0.828780    0.697709    0.166956

      VSPD7_perc
df_b    0.546648
df_c    0.206950

相关问题 更多 >

    热门问题