【发布时间】:2018-07-13 11:42:24
【问题描述】:
我有两个包含数百列的 CSV_file,我想计算两个 CSV_file 的每个相同列的 Pearson 相关系数和 p 值。问题是,当一列中缺少数据“NaN”时,它会给我一个错误。当“.dropna”从列中删除 nan 值时,有时 X 和 Y 的形状不相等(基于删除的 nan 值)并且我收到此错误:
"ValueError: 操作数不能与形状一起广播 (1020,) (1016,)"
问题:如果“nan”中一个 csv 中的第 8 行,有没有办法从另一个 csv 中删除同一行,并根据两个 csv 文件中具有值的行对每一列进行分析?
import pandas as pd
import scipy
import csv
import numpy as np
from scipy import stats
df = pd.read_csv ("D:/Insitu-Daily.csv",header = None)
dg = pd.read_csv ("D:/Model-Daily.csv",header = None)
pearson_corr_set = []
pearson_p_set = []
for i in range(1,df.shape[1]):
X= df[i].dropna(axis=0, how='any')
Y= dg[i].dropna(axis=0, how='any')
[pearson_corr, pearson_p] = scipy.stats.stats.pearsonr(X, Y)
pearson_corr_set = np.append(pearson_corr_set,pearson_corr)
pearson_p_set = np.append(pearson_p_set,pearson_p)
with open('D:/Results.csv','wb') as file:
str1 = ",".join(str(i) for i in np.asarray(pearson_corr_set))
file.write(str1)
file.write('\n')
str1 = ",".join(str(i) for i in np.asarray(pearson_p_set))
file.write(str1)
file.write('\n')
【问题讨论】:
标签: python arrays numpy nan pearson-correlation