fit_transform出错:输入包含NaN,无穷大或者对于dtype('float64')来说太大的值

时间:2017-04-11 01:51:56

标签: python pandas

我有一个形状的数据框(14407,2564)。我试图使用VarianceThreshold函数删除低方差特征。但是,当我调用fit_transform时,我收到以下错误:

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

在使用VarianceThreshold之前,我使用以下代码替换了我的df中的所有缺失值:

 <uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

之后我使用以下方法检查了我的数据帧是否为空/无限值:

    df.replace('null',np.NaN, inplace=True)
    df.replace(r'^\s*$', np.NaN, regex=True, inplace=True)
    df.fillna(value=df.median(), inplace=True)

我得到一个空系列作为输出,这意味着我的所有列都没有任何缺失值。输出是:

    m = df.isnull().any()
    print "========= COLUMNS WITH NULL VALUES ================="
    print m[m]
    print "========= COLUMNS WITH INFINITE VALUES ================="
    m = np.isfinite(df.select_dtypes(include=['float64'])).any()
    print m[m]

完整错误跟踪:

    ========= COLUMNS WITH NULL VALUES =================
    Series([], dtype: bool)
    ========= COLUMNS WITH INFINITE VALUES =================
    Series([], dtype: bool)

所以,我不确定要检查什么,这似乎不是一个缺失值问题,但我也无法得到导致问题的列/值。

我在这里看到几个线程都以缺失值结束,但这似乎不是问题。

1 个答案:

答案 0 :(得分:1)

我通过将数据转换为数字来解决这个问题。看起来,虽然错误消息指出'float64',但我的数据只是所有对象,而且对象在fit_transform中效果不佳。

使用以下方法将我的数据更改为浮动: df = df.apply(lambda x: pd.to_numeric(x,errors='ignore')) 解决了这个问题。