Python数据可视化实战——iris数据集可视化

首先,这个Python数据可视化实战是在Iris数据集上完成的。所使用的是Python 3环境下的jupyter notebook。

实战中我们需要用到的库包括:pandas , matplotlib , seaborn.

%matplotlib notebook #在jupyter notebook使用交互式绘图
# 首先,我们导入pandas, 一个可用于数据处理和CSV文件输出输出的库
import pandas as pd

# 同时导入seaborn, 一个Python里面的图形库
import warnings # 当前版本的seaborn会生成一堆警告,我们会忽略它
warnings.filterwarnings("ignore")
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="white", color_codes=True)

# 接着我们导入Iris flower 数据集, 这个数据集是在路径"../input/" 下面
iris = pd.read_csv("./input/iris.csv") # the iris dataset is now a Pandas DataFrame

#Jupyter notebooks显示数据集的前5行
iris.head()

# 按下shift+enter来执行单元格

 

# 统计每个品种有多少个样本
iris["Species"].value_counts()
setosa        50
virginica     50
versicolor    50
Name: Species, dtype: int64
# 第一种方法我们用Pandas dataframes扩展的.plot来画图
# 我们将用这个来画出irisz中Sepal_Length和Sepal_Width特征的散点图。
iris.plot(kind="scatter", x="Sepal_Length", y="Sepal_Width")

# 我们也可以使用seaborn库来话相似的图
# 一个seaborn的结合图在同一图中显示了双变量散点图和单变量直方图
sns.jointplot(x="Sepal_Length", y="Sepal_Width", data=iris, size=5)

 

# 在上面的图中缺失的一些信息是每一种植物的种类
# 我们将使用seaborn的FacetGrid来为散点图上色
sns.FacetGrid(iris, hue="Species", size=5) \
   .map(plt.scatter, "Sepal_Length", "Sepal_Width") \
   .add_legend()

 

# 我们可以通过一个箱形图来查看seaborn的单独的一个特征
sns.boxplot(x="Species", y="Petal_Length", data=iris)

# 我们可以通过用seaborn的striplot添加单独的点来扩展上图
# 
# 我们将使用jitter=True,这样所有的点都不会落在物种的单条垂直线上
#
# 每次将产生的轴作为ax,每次都会导致结果图显示在前面的axes上
ax = sns.boxplot(x="Species", y="Petal_Length", data=iris)
ax = sns.stripplot(x="Species", y="Petal_Length", data=iris, jitter=True, edgecolor="gray")

 

# violinplot结合了前两个plot的优点并简化了它们
# 在violinplot中,更密集的数据区域更胖,更稀疏的数据区域更薄
sns.violinplot(x="Species", y="Petal_Length", data=iris, size=6)

# 最后一个用于研究单变量关系的seaborn plot是kdeplot,它创建并可视化了底层特性的内核密度估计
sns.FacetGrid(iris, hue="Species", size=6) \
   .map(sns.kdeplot, "Petal_Length") \
   .add_legend()

 

# 另一个有用的seaborn plot是pairplot,它显示了每一对特征之间的双变量关系
# 从pairplot中,我们可以看到Iris-setosa物种在所有特征组合中与另外两种都是分离的
sns.pairplot(iris.drop("ID", axis=1), hue="Species", size=3)

# 在pairplot中,对角线元素在默认情况下显示了直方图
# 我们可以更新这些元素以显示其他东西,比如kde
sns.pairplot(iris.drop("ID", axis=1), hue="Species", size=3, diag_kind="kde")

 

# 讲解完seaborn之后,让我们回到pandas中
# 我们可以快速制作一个Pandas的箱形图,每个特征按物种划分
iris.drop("ID", axis=1).boxplot(by="Species", figsize=(12, 6))

# Andrews曲线涉及使用样本的属性作为傅立叶级数的系数,然后进行绘制
from pandas.tools.plotting import andrews_curves
andrews_curves(iris.drop("ID", axis=1), "Species")

 

# pandas另一种多变量可视化技术是parallel_coordinates
# 平行坐标在单独的列上绘制每个特征。然后绘制连接每个数据样本要素的线条
from pandas.tools.plotting import parallel_coordinates
parallel_coordinates(iris.drop("ID", axis=1), "Species")

 

# pandas最后的多变量可视化技术是radviz,它将每个特征作为一个点放在2D平面上,然后通过由该特征的相对值加权的跳跃加到这些点上来模拟每个样本
from pandas.tools.plotting import radviz
radviz(iris.drop("ID", axis=1), "Species")

 

 

参考链接:

https://www.kaggle.com/benhamner/python-data-visualizations

http://seaborn.pydata.org/api.html

http://seaborn.pydata.org/tutorial.html#

http://pandas.pydata.org/pandas-docs/stable/visualization.html

https://matplotlib.org/tutorials/index.html

https://matplotlib.org/gallery/index.html 

  • 13
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的兔子Philip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值