代码之家  ›  专栏  ›  技术社区  ›  MysteryGuy

当我缩放数据时,输入包含NaN、infinity或一个对dtype('float64')太大的值

  •  1
  • MysteryGuy  · 技术社区  · 6 年前

    我正试图像这样规范化我的数据:

    scaler = MinMaxScaler()
    trainX=scaler.fit_transform(X_data_train)
    

    我得到一个错误:

    ValueError:输入包含NaN、无穷大或对dtype('float64')太大的值。

    X_data_train 是一个大熊猫数据帧 (95538, 550) . 真正奇怪的是当我写作的时候

    print (X_data_train.min().min())
    

    它给出了-5482.4473,同样的,对于最大值,我得到了28738212.0,这对我来说似乎不是很高的值。。。

    此外,根据54+投票人发出的命令 answer ,我查过了我没有 NaN Infinity csv 或者类似的,当我检查尺寸的时候

    1 回复  |  直到 6 年前
        1
  •  1
  •   jezrael    6 年前

    你也可以查一下 NaN s和 inf

    df = pd.DataFrame({'B':[4,5,4,5,5,np.inf],
                       'C':[7,8,9,4,2,3],
                       'D':[np.nan,3,5,7,1,0],
                       'E':[5,3,6,9,2,4]})
    
    print (df)
              B  C    D  E
    0  4.000000  7  NaN  5
    1  5.000000  8  3.0  3
    2  4.000000  9  5.0  6
    3  5.000000  4  7.0  9
    4  5.000000  2  1.0  2
    5       inf  3  0.0  4
    
    nan = df[df.isnull().any(axis=1)]
    print (nan)
         B  C   D  E
    0  4.0  7 NaN  5
    
    inf = df[df.eq(np.inf).any(axis=1)]
    print (inf)
         B  C    D  E
    5  inf  3  0.0  4
    

    如果要查找至少有一个的所有索引 行中的s:

    print (df.index[np.isnan(df).any(axis=1)])
    Int64Index([0], dtype='int64')
    

    和列:

    print (df.columns[np.isnan(df).any()])
    Index(['D'], dtype='object')