Python教程

Python数据分析项目实例2:鸢尾花(Iris)数据集分析

本文主要是介绍Python数据分析项目实例2:鸢尾花(Iris)数据集分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

iris数据集下载(免费):https://download.csdn.net/download/weixin_44940488/20718531

使用的分析软件:jupyter notebook

主要语法知识:Python数据清洗与整理、seaborn数据可视化。

1.  导入数据

# 导入相关库
from pandas import Series,DataFrame
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import matplotlib as mpl
import seaborn as sns  #导入seaborn绘图库
# 读取数据集
iris_data = pd.read_csv(open('数据\iris-data.csv'))
iris_data.head()

      鸢尾花数据集经常用于及其学习(分类算法)的入门例子。其中,sepal_length_cm:为花萼长度; sepal_width_cm:为花萼宽度; petal_length_cm:为花瓣长度; petal_width_cm:花瓣宽度。

2.  定义问题

         通过数据可视化和分析,按照鸢尾花的特征分出鸢尾花的类别。其中涉及到的主要语法知识是数据清洗与整理。

3.  数据清洗

# 首先对数据进行简单描述,看其中是否有异常值
iris_data.shape

# 统计
iris_data.describe()

 通过结果可以看出,共有150条数据,通过每个字段的平均值和方差,看不出有异常值。


# 查看唯一值
iris_data['class'].unique()

# 修改
iris_data.ix[iris_data['class'] == 'versicolor', 'class'] = 'Iris-versicolor'
iris_data.ix[iris_data['class'] == 'Iris-setossa', 'class'] = 'Iris-setosa'

iris_data['class'].unique()

        回到异常值处理中,这里分析可能是分类原因,数据都很均衡。下面利用seaborn绘制散点图矩阵。

# 散点图绘制
sns.scatterplot(x='petal_width_cm',y='petal_length_cm',data = iris_data,
               color='blue',marker='+',s = 20)

# 散点图矩阵
sns.pairplot(iris_data, hue='class')

 

# Iris-setosa的花萼宽度直方图
iris_data.ix[iris_data['class'] == 'Iris-setosa', 'sepal_width_cm'].hist()

# 如果对异常值产生的原因不够清楚,所以直接对小于2.5cm的数据进行过滤
iris_data = iris_data.loc[(iris_data['class'] != 'Iris-setosa') | (iris_data['sepal_width_cm'] >= 2.5)]
iris_data.loc[iris_data['class'] == 'Iris-setosa', 'sepal_width_cm'].hist()


# 通过索引选取Iris-versicolor样本中sepal_length_cm值小于0.1的数据
# 选取异常数据
iris_data.loc[(iris_data['class'] == 'Iris-versicolor') &
              (iris_data['sepal_length_cm'] < 1.0)]

       图中的sepal_length_cm数据很小,有可能是单位错误,这里输入的是以m为单位,通过与其他数据的比较,初步认定可能是单位设置问题。通过以下代码,对数据乘以100。

iris_data.loc[(iris_data['class'] == 'Iris-versicolor') &
              (iris_data['sepal_length_cm'] < 1.0),
              'sepal_length_cm'] *= 100.0
# 查看是否有缺失值
iris_data.isnull().sum()

# 查看缺失值
iris_data[iris_data['petal_width_cm'].isnull()]

# 删除缺失值
iris_data.dropna(inplace=True)

4.  数据保存

iris_data.to_csv('数据\iris-clean-data.csv', index=False)

5.  数据探索

# 数据读取
iris_data = pd.read_csv(open('数据\iris-clean-data.csv'))
iris_data.head()

iris_data.shape

sns.pairplot(iris_data, hue='class')

# boxplot:箱体图绘制;figsize:设置画布大小。
iris_data.boxplot(column='petal_length_cm', by='class',grid=False,figsize=(6,6))

这篇关于Python数据分析项目实例2:鸢尾花(Iris)数据集分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!