博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
核密度图(直方图的拟合曲线)
阅读量:5261 次
发布时间:2019-06-14

本文共 2846 字,大约阅读时间需要 9 分钟。

核密度图可以看作是概率密度图,其纵轴可以粗略看做是数据出现的次数,与横轴围成的面积是一.

法一:seaborn的kdeplot函数专门用于画核密度估计图.

参考:

import pandas as pdimport numpy as npimport matplotlib.pylab as pltimport osimport seaborn as sns## 有时候要FQ才能下载# df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")# df.to_csv('../data/mpg_ggplot2.csv', index=False)df = pd.read_csv('../data/mpg_ggplot2.csv')print(df.info())print(df.shape)# Draw Plotplt.figure(figsize=(16,10), dpi= 90)  # dpi用于设置输出figure中所有字体的大小# 将cyl列等于4的cty筛选出来做图sns.kdeplot(df.loc[df['cyl'] == 4, "cty"], shade=True, color="g", label="Cyl=4", alpha=0.5)sns.kdeplot(df.loc[df['cyl'] == 5, "cty"], shade=True, color="deeppink", label="Cyl=5", alpha=.5)sns.kdeplot(df.loc[df['cyl'] == 6, "cty"], shade=True, color="dodgerblue", label="Cyl=6", alpha=.5)sns.kdeplot(df.loc[df['cyl'] == 8, "cty"], shade=True, color="orange", label="Cyl=8", alpha=.5)# Decorationplt.title('Density Plot of City Mileage by n_Cylinders', fontsize=22)plt.legend()plt.show()
View Code

 displot()是将直方图和核密度图综合,

import pandas as pdimport numpy as npimport matplotlib.pylab as pltimport osimport seaborn as sns## 有时候要FQ才能下载# df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")# df.to_csv('../data/mpg_ggplot2.csv', index=False)df = pd.read_csv('../data/mpg_ggplot2.csv')# distplot图是直方图hist()和核密度图kdeplot()图的合体,# bins参数用于调节直方图的数量# 官网链接:http://seaborn.pydata.org/generated/seaborn.distplot.html# 参数解释:http://www.sohu.com/a/158933070_718302plt.figure(figsize=(16,10), dpi= 90)sns.distplot(df.loc[df['cyl'] == 4, "cty"],  color="g", label="Cyl=4", bins = 100 )sns.distplot(df.loc[df['cyl'] == 5, "cty"],  color="deeppink", label="Cyl=5", bins= 10 )plt.legend()plt.show()
View Code

 

给定一组连续值的数据,将它们分成若干小段,统计每个小段中数据的个数,并画出它们的直方图和拟合曲线.

法二:利用seaborn中的包可以快速实现,这里的拟合曲线默认不是正态曲线,而是更好的拟合了数据的分布情况,但通过参数fit可以设置拟合正态曲线.

import seaborn as snsimport matplotlib.pyplot as pltimport numpy as npsns.set(style="ticks")from sklearn import datasetsfrom scipy.stats import normiris = datasets.load_iris()   # 载入鸢尾花数据集x = iris.data[:,0]            # 取narry中的第一列sns.set_palette("hls")        #设置所有图的颜色,使用hls色彩空间# sns.distplot( x,color="r",bins=100,kde=True,)# hist=False)# hist和kde参数默认都是True,分别用于控制是否展现直方图和拟合的曲线图# fit可用于指定拟合正态分布,要导入from scipy.stats import normsns.distplot( x,bins=30, hist=True,kde_kws={
'color': 'green', 'lw':3, 'label':'x'}, hist_kws={
'color': 'red', 'alpha': 0.2})plt.show()
View Code

官网教程:

参考:

法三:利用round()函数保留小数点后一位或两位,再groupby作图,但效果远不如第一种.

f_train['VAR00007'] = f_train['VAR00007'].apply( lambda x: round(x, 1))f_train = f_train.groupby(['VAR00007'])['VAR00007'].agg(['count']).reset_index()f_train.sort_values(['VAR00007'], )ydata = f_train['VAR00007'].tolist()x = f_train['count'].tolist()ydata.sort(reverse=False)plt.scatter( ydata, x)plt.show()
View Code

 

转载于:https://www.cnblogs.com/xxswkl/p/11184267.html

你可能感兴趣的文章
程序员究竟该如何提高效率zt
查看>>
希尔排序法(缩小增量法)
查看>>
PHP编程基础学习(一)——数据类型
查看>>
MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
java.util.Arrays类详解
查看>>
idea搭建tocmat
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
转获取sql维护的表关系
查看>>