前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >鸢尾花数据集可视化探索

鸢尾花数据集可视化探索

作者头像
数据山谷
发布2021-01-22 10:27:57
1.2K0
发布2021-01-22 10:27:57
举报
文章被收录于专栏:数据山谷数据山谷
写在开头

学过数据分析的朋友们肯定都知道鸢尾花数据集。作为一个简简单单只有 4 个特征的150 行数据,经常被拖出来在数据处理和聚类算法课上作为例子。

今天我们就再一次请出鸢尾花数据集,做数据可视化探索。

何为数据探索?

数据探索为什么还要用到可视化?

数据探索是数据分析的第一步,拿到一份数据,我们首先要去了解一下数据的基本分布特征、变量之间的相关性等等。通过探索分析,我们才能进一步的确定分析方向。即便是我们在拿到数据之前已经有了一个大致方向,数据探索这个步骤也是必不可少的,他能帮我们发现我们之前没有想到或者顾及到的一些细节问题。

探索就探索,为啥还要对这个过程进行可视化呢?

1. 首先,Python 为我们提供了非常多且便捷的可视化方案,基本上三两行代码便能实现;

2. 字不如图,如果看文字信息,比如说相关系数、平均值、分布方差等数据,我们并不一定能第一时间很直观的看出数据之间的关联;

3. 有图表更加方便我们展示,或者做报告。

话不多说上代码

代码语言:javascript
复制
# 导入一些我们我们需要使用到的库
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
代码语言:javascript
复制
# 读取鸢尾花数据集
data = load_iris()
# 将数据用 DataFrame 格式处理拼接
iris = np.concatenate([data.data,data.target.reshape(-1,1)],axis=1)
iris = pd.DataFrame(iris
                   ,columns=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)','tpye'])
# 展示数据
iris.head()

首先,把数据整理好后,我们用 head() 方法先看看前 5 行数据。整体数据记录整鸢尾花的花瓣长度、花瓣宽度、花萼长度、花萼宽度。并且在 type 标明了每条记录的鸢尾花类型。

0:setosa

1:versicolor

2:virginica

代码语言:javascript
复制
# 设置画布信息
plt.figure(figsize=(14,4)
          ,dpi=120)

# 提取字段列名
names = iris.columns.values.tolist()

# 循环画图
for i in np.arange(iris.shape[1]-1):
    plt.subplot(1,4,i+1)
    plt.hist(iris.iloc[:,i]
            ,bins=10
            ,color='k')
    plt.title(np.array(names)[i])

# 设置画布信息
plt.figure(figsize=(14,4)
          ,dpi=120)

# 循环画图
for i in np.arange(iris.shape[1]-1):
    plt.subplot(1,4,i+1)
    plt.hist(iris.iloc[:,i]
            ,bins=20
            ,color='k')
    plt.title(np.array(names)[i])

plt.show()

我们分别对四个特征值做了分布直方图,并且设置了 10 个分组和 20 个分组。

代码语言:javascript
复制
# 设置画布信息
plt.figure(figsize=(14,8)
          ,dpi=120)

# 整合每个箱子的数据
boxplot_dt = [iris.iloc[:,0],iris.iloc[:,1],iris.iloc[:,2],iris.iloc[:,3]]

# 绘制箱线图
plt.boxplot(boxplot_dt
           ,labels=('sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'))

plt.show()
代码语言:javascript
复制
# 设置画布信息
plt.figure(figsize=(14,16)
          ,dpi=120)

# 获取不同类型数据列表
iris_name = ['Setosa','Versicolour','Virginica']

# 循环绘制箱线图
for i in np.arange(iris.iloc[:,-1].nunique()):
    boxplot_dt1=iris[iris.iloc[:,-1]==i]
    boxplot_dt1 = [boxplot_dt1.iloc[:,0],boxplot_dt1.iloc[:,1],boxplot_dt1.iloc[:,2],boxplot_dt1.iloc[:,3]]
    plt.subplot(3,1,i+1)
    plt.boxplot(boxplot_dt1
               ,labels=('sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'))
    plt.title(iris_name[i])


plt.show()
代码语言:javascript
复制
# 设置画布信息
plt.figure(figsize=(14,8)
          ,dpi=120)

for i in np.arange(iris.shape[1]-1):
    plt.subplot(2,2,i+1)
    sns.ecdfplot(iris.iloc[:,i])

经验累积分布图

熊猫寄语:祝大家也能写出如诗般的代码。下课!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据山谷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档