我试图从每一列中减去平均值并除以标准偏差。我使用了两种不同的方法(numeric_data1
和numeric_data2
):
import pandas as pd
data = pd.read_csv("https://s3.amazonaws.com/demo-datasets/wine.csv")
numeric_data = data.drop("color", 1)
numeric_data1 = ((numeric_data - numeric_data.mean()) /
numeric_data.std())
numeric_data2 = ((numeric_data - np.mean(numeric_data, axis=0)) /
np.std(numeric_data, axis=0))
type(numeric_data1) # -> pandas.core.frame.DataFrame
type(numeric_data2) # -> pandas.core.frame.DataFrame
两个数据框都是Pandas数据框,它们应该有相同的结果。然而,我得到了不同的结果:
numeric_data2 == numeric_data1 # -> False
我认为问题源于numpy和pandas处理数字精度的方式:
numeric_data.mean() == np.mean(numeric_data, axis=0) # -> True
numeric_data.std(axis=0) == np.std(numeric_data, axis=0) # -> False
对于均值,numpy和pandas给出的结果是一样的,但是对于标准差,我得到了略微不同的结果。
我的评估是否正确,或者我犯了某些错误?