数据清洗
在数据分析和机器学习项目中,数据清洗(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)
总结
本篇介绍了:
- 如何将异常数据转换为空值
- 空值填充
- 数据保存