本文背景

  原有在网易云课堂学习课程Python机器学习简介,只不过好久没看。现想回顾一下,巩固所学内容。

数据集简介

  Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
  iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的各50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
该数据集包含了4个属性:
   Sepal.Length(花萼长度),单位是cm;
   Sepal.Width(花萼宽度),单位是cm;
   Petal.Length(花瓣长度),单位是cm;
   Petal.Width(花瓣宽度),单位是cm;
种类:
   Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。

数据检查

忽略报错

import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)
warnings.filterwarnings("ignore",category=RuntimeWarning)

数据导入

import pandas as pd
iris_data=pd.read_csv('iris.csv')
iris_data.head()
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
05.13.51.40.2setosa
14.93.01.40.2setosa
24.73.21.30.2setosa
34.63.11.50.2setosa
45.03.61.40.2setosa
#判断是否缺失数据
iris_data.isnull().values.any()
True
#统计缺失数据的行数
iris_data.isnull().sum()
sepal_length    0
sepal_width     0
petal_length    0
petal_width     6
species         0
dtype: int64

对数据文件的大体描述

iris_data.describe()
sepal_lengthsepal_widthpetal_lengthpetal_width
count150.000000150.000000150.000000144.000000
mean5.8433333.0540003.7586671.240278
std0.8280660.4335941.7644200.750414
min4.3000002.0000001.0000000.100000
25%5.1000002.8000001.6000000.400000
50%5.8000003.0000004.3500001.350000
75%6.4000003.3000005.1000001.800000
max7.9000004.4000006.9000002.500000

数据可视化实现

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sb

sb.pairplot(iris_data.dropna(),hue="species")
<seaborn.axisgrid.PairGrid at 0x21cbc043388>

在这里插入图片描述

数据整理

显示蝴蝶花类别

iris_data['species'].unique()
array(['setosa', 'versicolor', 'virginica'], dtype=object)

sepal_width的数值分布

iris_data.loc[iris_data['species']=='setosa','sepal_width'].describe()
count    50.000000
mean      3.418000
std       0.381024
min       2.300000
25%       3.125000
50%       3.400000
75%       3.675000
max       4.400000
Name: sepal_width, dtype: float64

过滤孤立点

iris_data=iris_data.loc[(iris_data['species']!='setosa')|(iris_data['sepal_width']>=2.5)]
iris_data.loc[(iris_data['species']=='setosa','sepal_width')].hist()
<matplotlib.axes._subplots.AxesSubplot at 0x21cbd341548>

在这里插入图片描述

过滤缺失数据

iris_data.loc[(iris_data['sepal_length'].isnull())|
              (iris_data['sepal_width'].isnull())|
              (iris_data['petal_length'].isnull())|
              (iris_data['petal_width'].isnull())]
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
64.63.41.4NaNsetosa
75.03.41.5NaNsetosa
84.42.91.4NaNsetosa
94.93.11.5NaNsetosa
105.43.71.5NaNsetosa
114.83.41.6NaNsetosa

计算平均值

average_petal_width=iris_data.loc[iris_data['species']=='setosa','petal_width'].mean()

将平均值赋予空值

iris_data.loc[(iris_data['species']=='setosa' )&
              (iris_data['petal_width'].isnull()),'petal_width']=average_petal_width

iris_data.loc[(iris_data['species']=='setosa' )&
              (iris_data['petal_width']==average_petal_width)]
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
64.63.41.40.248837setosa
75.03.41.50.248837setosa
84.42.91.40.248837setosa
94.93.11.50.248837setosa
105.43.71.50.248837setosa
114.83.41.60.248837setosa

判断空值是否存在

iris_data.loc[(iris_data['sepal_length'].isnull())|
              (iris_data['sepal_width'].isnull())|
              (iris_data['petal_length'].isnull())|
              (iris_data['petal_width'].isnull())]
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐