Pandas 计算Z分数有什么问题?

Pandas 计算Z分数有什么问题?,pandas,indexing,Pandas,Indexing,我将继续删除异常值。我有一列火车和一套测试设备: train.shape >>>(38959, 114) test.shape >>>(3988, 114) 我有: z = np.abs(stats.zscore(train.astype(float))) train = train[(z < 3).all(axis=1)] z_ = np.abs(stats.zscore(test.astype(float))) test = test[(z_ &

我将继续删除异常值。我有一列火车和一套测试设备:

train.shape
>>>(38959, 114)
test.shape
>>>(3988, 114)
我有:

z = np.abs(stats.zscore(train.astype(float)))
train = train[(z < 3).all(axis=1)]

z_ = np.abs(stats.zscore(test.astype(float)))
test = test[(z_ < 3).all(axis=1)]
z=np.abs(stats.zscore(train.astype(float)))
列车=列车[(z<3)。所有(轴=1)]
z=np.abs(stats.zscore(test.astype(float)))
测试=测试[(z_<3)。全部(轴=1)]

这对于
来说效果很好,但会删除测试中的每一行。无论我做
test[(z_<3).all(axis=1)]
还是
test[(z_>3).all(axis=1)]
它都会返回一个空数据帧。究竟为什么会发生这种情况?两个数据帧的编码方式相同,列数完全相同。只有行数不同。

z
以某种方式获得了所有的
nan
test
中可能包含
nan
,因此当您进行zscore时,您会得到
nan
。然后
z\u3
z\u3
都是
False
。这是我的猜测。它不是nan,如果我打印
z
,它实际上包含一组小于3的数字。我的集合中也没有nan,因为我对它们进行了插补。然后你需要提供一个样本数据集来重现这个问题,这样我才能看到。