目录
一、iris数据集介绍
二、一维数据可视化
三、二维数据可视化
四、多维数据可视化
五、参考资料
一、iris数据集介绍
iris数据集有150个观测值和5个变量,分别是sepal length、sepal width、petal length、petal width、species,其中species有3个取值:setosa、virginica、versicolor,反正就是鸾尾花的3个不同品种吧,各有50个观测值。具体见下表。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
sns.set(style="white", color_codes=True)
#加载iris数据集
from sklearn.datasets import load_iris
iris_data = load_iris()
iris = pd.DataFrame(iris_data['data'], columns=iris_data['feature_names'])
iris = pd.merge(iris, pd.DataFrame(iris_data['target'], columns=['species']), left_index=True, right_index=True)
labels = dict(zip([0,1,2], iris_data['target_names']))
iris['species'] = iris['species'].apply(lambda x: labels[x])
iris.head()
iris data.png
我们以iris数据集为例,演示如何使用matplotlib、seaborn、pandas、sklearn进行一维、二维及多维数据可视化,进行探索性数据分析,为后期建模提供一些思路。
二、一维数据可视化
Seaborn是Python基于matplotlib的数据可视化工具。它提供了很多高层封装的函数,帮助数据分析人员快速绘制美观的数据图形,而避免了许多额外的参数配置问题。
用boxplot画出单个特征与species的关系,可以看到不同品种的鸾尾花在petal length单个维度上已经可以较好地划分出来,尤其setosa的petal length跟另外两个品种的petal length差别不要太大好吗,一眼就把你给认出来了。
# look at an individual feature in Seaborn through a boxplot
sns.boxplot(x='species', y='petal length (cm)', data=iris)
box plot
kdeplot核密度图
# kdeplot looking at univariate relations
# creates and visualizes a kernel density estimate of the underlying feature
sns.FacetGrid(iris, hue='species',size=6) \
.map(sns.kdeplot, 'petal length (cm)') \
.add_legend()
kdeplot
violinplot琴形图:结合了箱线图与核密度估计图的特点,它表征了在一个或多个分类变量情况下,连续变量数据的分布并进行了比较,它是一种观察多个数据分布有效方法。
# A violin plot combines the benefits of the boxp