亦菲喊你来学机器学习(21) --数据清洗

数据清洗

在数据分析和机器学习项目中,数据清洗(Data Cleaning)是一个至关重要的步骤,它涉及到处理原始数据中的错误、缺失值、异常值、重复记录以及不一致的格式等问题。data.fillna() 是Pandas库中用于处理缺失值(NaN值)的一个非常有用的方法。

1. 读取数据

import pandas as pd
data = pd.read_excel('矿物数据.xlsx')
data = data[data['矿物类型'] != 'E']# 去除类型为E的数据(仅一条太少,无法训练)
# 分隔数据与标签
x_whole = data.drop('矿物类型',axis = 1).drop('序号',axis = 1)
y_whole = data.矿物类型

2. 处理异常值

to_numeric()函数尝试将参数中的数据转化为数值类型,只要不能转换就会变成nan。如果转化失败会引发一个异常,'coerce'表示忽略异常

我们可以通过这个函数将每列异常的数值都变成nan,之后再给空值填充数据:

for column_name in x_whole.columns:
    x_whole[column_name] = pd.to_numeric(x_whole[column_name],errors='coerce')

3. 划分数据集

使用train_test_split()函数,随机划分数据集。

from sklearn.model_selection import train_test_split
x_train_w,x_test_w,y_train_w,y_test_w = \
    train_test_split(x_whole,y_whole,test_size=0.3,random_state=50000)

4. 数据填充

此处我们以每列的中位数填充数据为例:

  • 训练集
def median_method(data):
    fill_values = data.median()# 计算每列的中位数
    return data.fillna(fill_values) # data.fillna()指定一个值来替换所有的缺失值

x_train_fill,y_train_fill = fill_data.median_method(x_train_w)
  • 测试集
def median_method(data):
    fill_values = data.median()# 计算每列的中位数
    return data.fillna(fill_values) # data.fillna()指定一个值来替换所有的缺失值

x_test_fill,y_test_fill = fill_data.median_method(x_test_w)

5. 保存数据

  • pd.concat()函数,将数据合并,axis=1表示列合并,即水平方向合并
  • to_excel()函数,将数据保存为表格数据
data_train = pd.concat([x_train_fill,y_train_fill],axis=1).sample(frac=1,random_state=4)
data_test = pd.concat([x_test_fill,y_test_fill],axis=1)

data_train.to_excel('训练数据集[中位数填充].xlsx',index=False)
data_test.to_excel('测试数据集[中位数填充].xlsx',index=False)

总结

本篇介绍了:

  1. 如何将异常数据转换为空值
  2. 空值填充
  3. 数据保存

你可能感兴趣的:(机器学习,人工智能,python,算法)