1

我正在尝试在下面运行此代码:

print(); print('Scatter Matrix Plot')
sns.pairplot(dataset, hue = 'Protein', diag_kind="kde")
plt.show()

其中数据集是使用从 csv 读取的数据dataset = pd.read_csv(filename, sep = ',', names = col_names)

运行此代码时,我没有收到终止错误,而是收到警告,即“ data must have variance to compute a kernel density estimate”,并且没有一个图有通过它们的 kde 曲线。我查了一下,发现这可能是由于重复数据造成的,但是记录解决方案的唯一实例是使用该kdeplot()函数的实例,所以我不知所措。

4

1 回答 1

0

在不知道数据Protein是什么类型的情况下,我从它的名称猜测它是分类的。在这种情况下,可能有一个值Protein只出现一次,因此无法为各个数据计算方差。

查找Protein在任何列中只有一个唯一值的 -values:

only_one_by_prot = (dataset
                    .groupby("Protein")
                    .nunique() = 1
                   ).any(axis=1)

要获取这些Protein值的列表,请执行以下操作:

proteins_with_too_little_data = (
    only_one_by_prot[only_one_by_prot]
    .index.values
)

Protein要从中过滤掉这些值dataset

dataset.query("Protein not in @proteins_with_too_little_data")

我不认为您的Protein列具有连续的数值,但是这通常在 seaborns 中效果不佳hue,因为某些数字很可能只出现一次。在这种情况下,将数据分箱,例如使用pd.cut.

于 2020-09-08T19:28:16.600 回答