简单的数据清洗

简单的数据清洗

目的:对于数据缺失的部分,用中位数代替,整条数据全部为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
posted @ 2022-07-20 22:39  xiiii  阅读(57)  评论(0编辑  收藏  举报