【发布时间】:2018-11-08 08:37:53
【问题描述】:
我正在使用 Pandas 数据框,使用位于 http://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/crx.data 的 UCI 存储库信用筛选文件
数据包含一些缺失值,我想根据列的数据类型执行不同的插补策略。例如,如果该列是数字,则使用中值估算,但如果它是类别替换,例如“无值”。
我运行此代码来识别数字列:
#Import data
import pandas as pd
data = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-
databases/credit-screening/crx.data', header=None)
#Imputation
import numpy as np
data = data.replace('?', np.nan)
numeric_columns = data.select_dtypes(include=[np.number]).columns
然后它返回:
Out[67]: Int64Index([2, 7, 10, 14], dtype='int64')
由于某种原因,它没有识别第 1 列(显然是数字)。我相信原因是列中有一些 NaN 值使它看起来不是数字。任何人都知道发生了什么,我该怎么做才能将第 1 列识别为数字?
谢谢!
【问题讨论】:
-
当您尝试
data[0].dype时会看到什么?如果不是数字,请尝试:data[0] = pd.to_numeric(data[0], errors='coerce')。 -
我收到
dtype('O'),这是什么意思?我可以手动进行 to_numeric 转换,但我希望算法以编程方式进行。 -
dtype('O')表示对象,表示可能有字符串或任意类型。您将需要转换。
标签: python pandas numpy dataframe imputation