数据集的导入及缺失值处理

怎么选择数据集?

推荐阅读:机器学习可使用的数据集介绍

数据集的导入及缺失值处理_第1张图片 UCI iris 数据集

本次实验所用的鸢尾花 iris 数据集是来自于 UCI Machine Learning Repository ,比较简单,总共150行5列,前四列为特征向量,第五列为标签(0:Iris-setosa,1:Iris-versicolor,2:Iris-virginica),这三类各50行。

观察所下载的 iris.data 文件:

数据集的导入及缺失值处理_第2张图片 Iris-setosa
数据集的导入及缺失值处理_第3张图片 Iris-versicolor
数据集的导入及缺失值处理_第4张图片 Iris-virginica

 

为了便于后面实验,分别将 Iris-setosa、Iris-versicolor、Iris-virginica 替换为0、1、2,作为标签变量

 

怎么导入?

导入本次实验有关的 packages 和数据文件。

import numpy as np  # 数值运算
import pandas as pd  # 数据处理,CSV文件I/O

iris = pd.read_csv('iris.data.csv', header = None)  # 导入文件

 

怎么观察数据集?

导入后,用该语句可观察数据集大小、行列、数据类型、数据格式及有无缺失值

iris.info()  # 可观察数据集大小、行列、数据类型、数据格式及有无缺失值
数据集的导入及缺失值处理_第5张图片 iris数据集大小、行列、数据类型、数据格式及有无缺失值

 

怎么数组格式转化?

在代码行中运行 iris 可看到所导入数据集的情况:

数据集的导入及缺失值处理_第6张图片

数据集的导入及缺失值处理_第7张图片 150行5列

 

从这两图可知,iris 数据集目前是按照表格排列,对其进行数据格式转换(array数组):

iris = iris.values  # 转换为array数组

X = iris[:, 0:4]  # X取前四列特征变量

Y = iris[:, 4]  # Y取第5列标签target

基于 Anaconda + Jupyter Notebook 环境的运行结果:

数据集的导入及缺失值处理_第8张图片 iris数据集转为数组格式
数据集的导入及缺失值处理_第9张图片 X取特征变量,Y取样本标签

 

缺失值这么处理?

由于 iris 数据集本身是完整的数据集,不存在缺失值,为了简单演示怎么处理数据集中含有的缺失值,我随意选择 iris 数据集中的一些行列,删除一些数据点作为“缺失值”

存在缺失值的行列情况:

数据集的导入及缺失值处理_第10张图片 25行2列
数据集的导入及缺失值处理_第11张图片 120行4列
数据集的导入及缺失值处理_第12张图片 135行2列

 

观察还有缺失值的列:

# 打印含有 ‘nan’ 的列
droping_list_all = [ ]

for j in range(0, 4):
    if not iris.iloc[:, j].notnull().all():
        droping_list_all.append(j)
        
droping_list_all

数据集的导入及缺失值处理_第13张图片

对含有 ‘nan’ 的列用该列的均值进行填充:

# 对含有 ‘nan’ 的列用该列的均值进行填充

for j in range(0, 4):        
        iris.iloc[:, j]=iris.iloc[:, j].fillna(iris.iloc[:, j].mean())

可看到 iris 数据集目前不存在缺失值:

# 观察 iris 数据集是否还存在缺失值

iris.isnull().sum()

数据集的导入及缺失值处理_第14张图片

填充效果:

数据集的导入及缺失值处理_第15张图片 25行2列
数据集的导入及缺失值处理_第16张图片 120行4列
数据集的导入及缺失值处理_第17张图片 135行2列

 

你可能感兴趣的:(AI学习笔记,缺失值处理,数据集导入)