如何解决python中两个数据帧之间的Wilcoxon秩和检验
我正在尝试在两个数据帧之间执行Wilcoxon秩和检验。我只想在行之间执行测试。例如,测试仅应在df1(A,1、2、3)和df2(A,10、12、13)的第1行,df1(B,4、5、6)和df2的第2行之间进行(B,14、15、16),等等。
df1=pd.DataFrame(np.array([['A',1,2,3],['B',4,5,6],['C',7,8,9]]),columns=['Details','a','b','c'])
df2=pd.DataFrame(np.array([['A',10,12,13],14,15,16],17,18,19]]),'c'])
这应该导致我在数据帧的行之间找到一列p值用于测试。
out = pd.DataFrame(np.array([['A',0.05],0.0002],1]]),columns=['details','P'])
一种方法是应用for循环,但不幸的是,我的原始数据集中有28000行,并且该实验必须重复至少1000次。我想知道是否有人有更好的策略来解决这个问题。非常感谢您的提前帮助。
解决方法
一种计算方法是使用scipy的秩和
from scipy.stats import ranksums
import pandas as pd
df1=pd.DataFrame(np.array([['A',1,2,3],['B',4,5,6],['C',7,8,9]]),columns=['Details','a','b','c'])
df2=pd.DataFrame(np.array([['A',10,12,13],14,15,16],17,18,19]]),'c'])
a = df1.loc[0,'a':].values.astype(int) #Select the first row
b = df2.loc[0,'a':].values.astype(int) #Select the second row
ranksums(a,b)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。