我有约 375 个细胞系和约 14,000 个基因的数据文件。我正在尝试计算每个基因与其他所有基因的成对相关性。
代码非常简单,因为我使用的是 pingouin 包:
import pandas as pd
import pingouin as pg
df = pd.read_csv("CCLE Proteomics.csv", index_col=0, header=0)
df_corr = df.rcorr(stars=False)
print(df_corr)
尝试运行此代码返回:
ValueError: x and y must have length at least 2.
Pingouin 使用 Scipy pearsonr 进行计算,使用不带 Pingouin 的 pearsonr 返回相同的错误。
我还尝试使用虚拟数据集(随机数的 5x7 数据帧),它在不包含任何空值时工作正常,但如果数据帧中存在空值,则返回相同的错误。基于此,我认为我的数据集中的空值导致了问题 - 不幸的是,数据参差不齐,删除包含空值的所有行/列会使我没有留下任何行/列,并且在虚拟数据集中甚至一个 NaN值足以引发错误。由于 rcorr 在输入 pearsonr 之前删除了 NaN 值,我相信它会丢弃我所有的数据点并且没有任何东西可以输入。
df.corr 可以很好地计算我的 r 值,但我也需要一种方法来计算该数据集的 p 值,因为我们预计这些相关性中有很大一部分是微不足道的。
有没有一种方法可以在我的数据集中删除/屏蔽 NaN 值而不删除整个行/列?有没有办法运行 pearsonr,其行为类似于带有 (nan_policy:'omit') 的 spearmanr?我是否偏离了基地,这里的问题不是 NaN 值吗?