Python练习----循环关系对求person
#加载person函数包
import scipy.stats as stats
#加载pandas
import pandas as pd
#读入表达谱
f=open('T_01BLCA_Merge_matrix_gene.csv')
#用pandas转矩阵
t1=pd.read_csv(f)
#读入关系对pair
pai=open('aaa_result.csv')
#用pandas转矩阵
pair=pd.read_csv(pai)
#准备输出文件'w'
file_new=open('BLCA_result_new1.txt','w')
#pandas用.iloc对矩阵切片定位[:,:],拿出表达谱的第一列所有基因名存入list
gene=list(t1.iloc[:,0])
#定义一个空列表循环赋值
k=list()
#为列表加列名
k.append('name1\tname2\tr-value\tp-value\n')
#字符串上list定位用listname.index('') *只返回第一个匹配到的位置
for i in range(0,len(pair)):
aa=pair.iloc[i,0]
bb=pair.iloc[i,1]
lo1=gene.index(aa)
lo2=gene.index(bb)
p1=list(t1.iloc[lo1,])
p2=list(t1.iloc[lo2,])
name = p1[0]+'\t'+p2[0] #定义name 字符串连接用+'\t'+
del p1[0]
del p2[0]
resu=stats.pearsonr(p1,p2) #scipy.stats.personr(p1,p2)
context = name+'\t'+str(resu[0])+'\t'+str(resu[1])+'\n' #用字符串把结果拼接成一个变量方便写出txt文件
k.append(context)
print(i)
file_new.writelines(k) #写出txt文件,文件.writelines(str)
file_new.close()
f.close()
pai.close()