我有一个大数据帧(15000,3000),如下所示:
row_name,col1,col2,col3
row1,22,33,44
row2,46,87,90
row3,23,51,12
我使用Scipy对行执行spearman更正,如下所示:
import pandas as pd
from scipy import stats
df =pd.read_csv('my_dataframe.csv',index_col=0)
r, p =stats.spearmanr(df.T)
我可以访问相关值和它们的相对p值,但我想要的是-通过为r和p值指定特定的截断,我想让这些值对打印如下:
。r比;0和p <0.7
row1,row2,r-value,p-value
row1,row3,r-value,p-value
考虑到我看不同的Stackoverflow问题关于这个(像这个),我仍然没有能够找到一个简单的解决方案。你有什么建议吗?
提前谢谢你。
我自己编写了这个脚本,这样可以帮助我得到我想要的输出。输出需要后处理
import pandas as pd
from scipy import stats
df =pd.read_csv('my_dataframe.csv',index_col=0)
lst1=[]
lst2=[]
for i in df.T.columns:
lst1.append(i)
lst2.append(i)
for i in lst1:
for j in lst2:
if i!=j:
r, p = stats.spearmanr(df.T[i], df.T[j])
#if r > 0 and p < 0.7: condition can be added here
Data=str(i) + ',' + str(j) + ',' + str(r) + ',' + str(p)
print(Data)
输出:
row1,row2,1.0,0.0
row1,row3,-0.5,0.6666666666666667
row2,row1,1.0,0.0
row2,row3,-0.5,0.6666666666666667
row3,row1,-0.5,0.6666666666666667
row3,row2,-0.5,0.6666666666666667