python - 排除列具有 NA 值的行
问题描述
这是我的数据样本
我编写了这段代码,它删除了所有分类列(例如。MsZoning
)。但是,一些非分类列具有NA
价值。如何将它们从我的数据集中排除。
def main():
print('Starting program execution')
iowa_train_prices_file_path='C:\\...\\programs\\python\\kaggle_competition_iowa_house_prices_train.csv'
iowa_file_data = pd.read_csv(iowa_train_prices_file_path)
print('Read file')
model_random_forest = RandomForestRegressor(random_state=1)
features = ['MSSubClass','MSZoning',...]
y = iowa_file_data.SalePrice
# every colmn except SalePrice
X = iowa_file_data.drop('SalePrice', axis = 1)
#The object dtype indicates a column has text (hint that the column is categorical)
X_dropped = X.select_dtypes(exclude=['object'])
print("fitting model")
model_random_forest.fit(X_dropped, y)
print("MAE of dropped categorical approach");
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
main()
当我运行程序时,我收到错误,ValueError: Input contains NaN, infinity or a value too large for dtype('float32')
我认为这是由于NA
.Id=8
问题 1 - 我如何完全删除这些行 问题 2 - 这些列的类型是什么,这些列大多是 nos。但中间有文字吗?我以为我会做print("X types",type(X.columns))
,但这并没有给出结果
解决方案
要删除 nans,您可以将它们替换为另一个值。使用零是常见的做法。
iowa_file_data = iowa_file_data.fillna(0)
如果您仍想删除整列,请使用
iowa_file_data = iowa_file_data.dropna(axis='columns')
如果要删除整行,请使用
iowa_file_data = iowa_file_data.dropna()
对于您的第二个问题,据我了解,您可能希望查看有关 pandas object
dtype: link的一些信息。
推荐阅读
- python - 如何跳过特定模块中的所有测试用例?
- java - 通过Java中的方法传递变量
- android - 向上或向下滚动后,项目在 recyclerView 中放错位置
- c# - 使用包含条件的 C# 中的方法映射对象的正确方法
- linux - 如何在 centos 7 上重新加载 pythonic 服务?
- java - 生产者消费者代码问题(似乎通知方法没有释放循环内的锁)
- mongodb - $filter 在 mongodb 中最多 2 个嵌套级别
- powershell - 获取由 PowerShell 创建的现有 Internet Explorer 窗口
- rust - 计算获取块的平均值时出错
- python - 打印python文件中每个字符的统计信息