python不同分类的直方图_Python数据分析02-Iris-直方图与KDE

By IBM

0.篇首

上图是我在Coursera在线课程 What is data science(produced by IBM)的一篇阅读材料中截取下来的。正如文中所述:Digital revolution has touched every aspect of our lives. 请各位Data Scientist 做好准备!

1.直方图

直方图(Histogram),又称质量分布图,是一种统计报告图,是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被 Karl Pearson 首先引入。

在本文中我们会继续使用上篇文章Friendism:Python数据分析01-Iris鸢尾花数据集​zhuanlan.zhihu.com

所使用的 seaborn和 matplotlib 来完成直方图的绘制。

其中seaborn函数原型如下:

seaborn.distplot(a, bins=None, hist=True,

kde=True, rug=False, fit=None,

hist_kws=None, kde_kws=None, rug_kws=None,

fit_kws=None, color=None, vertical=False,

norm_hist=False, axlabel=None,

label=None, ax=None)

bins: 指定直方图规格,若为None,则使用Freedman-Diaconis规则,该规则对数据中的离群值不太敏感,可能更适用于重尾分布的数据。

hist:bool

是否绘制(标准化)直方图

kde:bool

是否绘制高斯核密度估计图

rug:bool

是否在支撑轴上绘制rugplot()图

{hist,kde,rug,fit} _kws:字典

底层绘图函数的关键字参数

color:matplotlib color

该颜色可以绘制除了拟合曲线之外的所有内容

vertical:bool

如果为True,则观察值在y轴上,即水平横向的显示

导入seaborn和 matplotlib以及数据集 Iris如下:

from __future__ import division

import pandas as pd

# We'll also import seaborn, a Python graphing library

import warnings # current version of seaborn generates a bunch of warnings that we'll ignore

warnings.filterwarnings("ignore")

import seaborn as sns

import matplotlib.pyplot as plt

sns.set(style="whitegrid", color_codes=True)

# Next, we'll load the Iris flower dataset, which is in the "../input/" directory

iris = pd.read_csv("/Users/jay/Desktop/datasets/iris/Iris.csv") # the iris dataset is now a Pandas DataFrame

# Let's see what's in the iris data - Jupyter notebooks print the result of the last thing you do

iris.head()

接下来绘制直方图:先用sns.FacetGrid画出轮廓,括号中指定数据集,col为指定column,即表的列

然后用map填充内容,plt.hist指定画图类型为直方图,横坐标为SepalLengthCm

绘制直方图代码如下:

g = sns.FacetGrid(iris, col="Species")

g = g.map(plt.hist, "SepalLengthCm", bins=20,color="r")

得出直方图如下:三种鸢尾花的SepalLength分布

2.核密度估计图(Kernel Density Estimation, KDE)

KDE是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)。Ruppert和Cline基于数据集密度函数聚类算法提出修订的核密度估计方法。

但是。。。我找了很多资料,也并没有很读懂KDE(可能还是高数不行的锅),所以我就不给大家乱解释了,希望有统计学的朋友,在看完文章后给我上上课,我再在文章中给大家做补充。尽管如此,在本次项目中使用KDE还是能看出一些东西,废话不多说,上代码!

# A final seaborn plot useful for looking at univariate relations is the kdeplot,

# which creates and visualizes a kernel density estimate of the underlying feature

sns.FacetGrid(iris, hue="Species", size=6) \

.map(sns.kdeplot, "PetalLengthCm") \

.add_legend()

hue="species"# 设置参数hue,分类显示

sns.kdeplot # 画出KDE图

g.add_legend() # 加注释

注意:文中用了"\",是因为知乎的代码块宽度不够,使用了"\"续行符,其实是可以作为完整的一句代码写完的。

然后,上图!以PetalLengthCm为横坐标的KDE图

我们可以很清晰地看到不同种类的鸢尾花在PetalLength上有很大差别。其中Setosa几乎不和另外两种鸢尾花重合。

3.总结

尽管我对KDE的用法还不是很熟练,但是画出来是很重要的一步。代码很简单,没有出过报错,本篇的重点还是统计学的一些数学概念和图表,需要大家一起来学习一起来进步。

参考链接:非参数估计:核密度估计KDE - bonelee - 博客园​www.cnblogs.com

作者:钴铬氢气

13/08/2020

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值