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

怎么选择数据集?

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

UCI iris 数据集

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

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

Iris-setosa
Iris-versicolor
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()  # 可观察数据集大小、行列、数据类型、数据格式及有无缺失值
iris数据集大小、行列、数据类型、数据格式及有无缺失值

 

怎么数组格式转化?

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

150行5列

 

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

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

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

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

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

iris数据集转为数组格式
X取特征变量,Y取样本标签

 

缺失值这么处理?

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

存在缺失值的行列情况:

25行2列
120行4列
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

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

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

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

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

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

iris.isnull().sum()

填充效果:

25行2列
120行4列
135行2列

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值