gpt4 book ai didi

python - PIL 逊相关系数和 nan 值

转载 作者:太空狗 更新时间:2023-10-29 21:41:35 24 4
gpt4 key购买 nike

我有两个包含数百列的 CSV_files,我想为两个 CSV_files 的每个相同列计算 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')

最佳答案

这是一种解决方案。首先计算 2 个 numpy 数组的“坏”索引。然后屏蔽以忽略那些坏索引。

x = np.array([5, 1, 6, 9, 10, np.nan, 1, 1, np.nan])
y = np.array([4, 4, 5, np.nan, 6, 2, 1, 8, 1])

bad = ~np.logical_or(np.isnan(x), np.isnan(y))

np.compress(bad, x) # array([ 5., 1., 6., 10., 1., 1.])
np.compress(bad, y) # array([ 4., 4., 5., 6., 1., 8.])

关于python - PIL 逊相关系数和 nan 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48591713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com