简单的数据清洗
简单的数据清洗
目的:对于数据缺失的部分,用中位数代替,整条数据全部为none的,直接删除
工具:pandas库中的DataFrame,以及numpy
数据可能是这样的
房屋面积 房屋朝向 经度 纬度 房价
0 100 坐北朝南 100 100 10000 #该条数据是完整的,可以使用
1 120 none 101 102 11000 #该条数据不完整,需要清理
2 none none none none none #该条数据全为空,应该删除
开始清洗
import pandas as pd
import numpy as np
#使用skleran中的Bunch自制数据集
from sklearn.utils import Bunch
#通过自定义函数获取数据列表
list = get_data()
#将列表转为DataFrame格式
data = df = pd.DataFrame(list)
#开始清洗
for index,line in df.iterrows():
#通过iloc函数获取指定行的数据
#通过sum函数获取该行的和
sum = df.iloc[index].sum()
#和不为零,则对空元素用中位数代替
if sum != 0:
#使用median函数获取中位数
median = df.iloc[index].median()
#使用fillna函数将空元素用中位数替代
df.iloc[index].fillna(median, inplace=True)
#和为零,则记下行号,之后删除该行
else:
none_list.append(index)
#使用drop函数删除指定行
df.drop(none_list,axis=0,inplace=True)
#将DataFrame转为Numpy数组,便于后续操作
data = df.to_numpy()
#将数据分为特征与结果
feature = data[:,0:4]
target = data[:,4:5]
#创建Bunch对象
rbb = Bunch()
#插入特征
rbb.data = data
#插入结果
rbb.target = your_target
#插入特征的名字
rbb.feature_names = your_feature_name
#插入结果的名字
rbb.target_names = your_target_name