1.单变量分析绘图
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as plt
from scipy import stats,integrate
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord,'distributions')))
x = np.random.normal(size=100)
sns.distplot(x,kde=False)
数据分布情况
sns.distplot(x,bins=20,kde=False) bins=20 平均分成20等份
x = np.random.gamma(6,size =200)
sns.distplot(x,kde=False,fit=stats.gamma)
kdeplot(核密度估计图)
核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一。通过核密度估计图可以比较直观的看出数据样本本身的分布特征
numpy.random.gamma
numpy.random.
gamma
(形状,比例= 1.0,尺寸=无)
从Gamma分布中抽取样本。
从具有指定参数,形状(有时指定为“k”)和比例(有时指定为“theta”)的Gamma分布中抽取样本 ,其中两个参数均> 0。
参数: | shape : float或array_like浮点数 伽玛分布的形状。应该大于零。 scale : float或array_like浮点数,可选 伽玛分布的规模。应该大于零。默认值等于1。 size : int或int的元组,可选 输出形状。如果给定的形状是例如,则 绘制样本。如果大小为(默认),单值,如果返回,并都标量。否则,绘制样本。 |
返回: | out : ndarray或标量 从参数化的伽玛分布中提取样本。 |
也可以看看
scipy.stats.gamma
概率密度函数,分布或累积密度函数等
distplot
displot()集合了matplotlib的hist()与核函数估计kdeplot的功能,增加了rugplot分布观测条显示与利用scipy库fit拟合参数分布的新颖用途。具体用法如下:
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)
根据均值和协方差生成数据
mean,cov = [0,1],[(1,.5),(.5,1)] 均值,协方差
data =np.random.multivariate_normal(mean,cov,200)
df = pd.DataFrame(data,columns=['x','y'])
df
numpy.random.multivariate_normal
numpy.random.
multivariate_normal
(mean, cov, size, check_valid, tol)
参数: | mean : 1-D array_like,长度为N. N维分布的平均值。 cov : 2-D array_like,形状(N,N) 协方差矩阵的分布。对于正确的采样,它必须是对称的和正半定的。 size : int或int的元组,可选 给定的形状,例如, check_valid : {'warn','raise','ignore'},可选 当协方差矩阵不是半正的时候的行为。 tol : float,可选 检查协方差矩阵中的奇异值时的容差。 |
返回: | 出 : ndarray 如果提供的话,绘制的样本,形状大小。如果没有,形状是 换句话说,每个条目 |
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
参数:
data : ndarray(结构化或同类),Iterable,dict或DataFrame
Dict可以包含Series,数组,常量或类似列表的对象
在版本0.23.0中更改:如果数据是dict,则为Python 3.6及更高版本维护参数顺序。
index : 索引或类似数组
用于结果框架的索引。如果没有索引信息部分输入数据且没有提供索引,则默认为RangeIndex
columns : 索引或类似数组
用于生成框架的列标签。如果未提供列标签,则默认为RangeIndex(0,1,2,...,n)
dtype : dtype,默认无
要强制的数据类型。只允许一个dtype。如果没有,推断
copy : boolean,默认为False
从输入中复制数据。仅影响DataFrame / 2d ndarray输入
观测两个变量之间的分布关系最好用散点图
sns.jointplot(x='x',y='y',data=df)
sns.jointplot(x=df['A'], y=df['B'],data = df)
#设置xy轴,显示columns名称 #设置数据
x,y =np.random.multivariate_normal(mean,cov,1000).T
with sns.axes_style('white'):
sns.jointplot(x=x,y=y,kind='hex',color='k')
通过sns.axes_style(style=None, rc=None) 返回一个sns.set_style()可传的参数的字典
kind = 'scatter',#设置类型
iris =sns.load_dataset('iris') iris是seaborn自己的一个鸢尾花的数据集
sns.pairplot(iris) 将花瓣,花萼的长度宽度作比较
2.回归分析绘图
regplot()和Implot()都可以绘制回归分析图,建议第一种
sns.regplot(x='total_bill',y='tip',data=tips) 全称 regressionplot
3.多变量分析绘图
sns.stripplot(x='day',y='tip',hue='sex',data=tips) hue分不同种类数据的column name
sns.swarmplot(x='day',y='tip',hue='sex',data=tips)
swarmplot:绘制具有非重叠点的分类散点图。
sns.violinplot(x='total_bill',y='day',hue='sex',data=tips,split=True)
俗称小提琴图,越胖的地方数据就越多
4.分类属性绘图
sns.barplot(x='day',y='total_bill',hue='size',data=tips)
显示值得集中趋势可以用条形图
sns.pointplot(x='day',y='total_bill',hue='size',data=tips) 点图可以更好的描述变化差异
sns.factorplot(x='day',y='total_bill',hue='smoker',data=tips)
多层面板分类图
sns.factorplot(x='day',y='total_bill',hue='smoker',data=tips,kind='swarm')
5.facetgrid函数
用于展示子集
g = sns.FacetGrid(tips,col='time') col:列
sns.set_style('white')
g = sns.FacetGrid(tips,col='time')
g.map(plt.hist,'tip') hist:条形图
g = sns.FacetGrid(tips,col='time',hue='smoker')
g.map(plt.scatter,'total_bill','tip',alpha=0.7) scatter散点图,alpha散点图的透明程度 0-1越来越深
g.add_legend()
g = sns.FacetGrid(tips,col='time',hue='smoker',size=4,aspect=0.5)
g.map(plt.scatter,'total_bill','tip',alpha=0.7) edgecolor:边界颜色 如'white' linewidth 线宽 s:散点的大小
g.add_legend()
pal = dict(Lunch='seagreen',Dinner='gray')
g=sns.FacetGrid(tips,hue='time',palette=pal,size=5) palette:调色板 hue_kws:指定什么形状(圆形,三角形。。)
g.map(plt.scatter,'total_bill','tip')
6.热度图(heatmap)
对于一离散性数据,通过热度图颜色变化的趋势表示出数值的变化
%matplotlib inline
import numpy as np
np.random.seed(0)
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
uniform_data = np.random.rand(3,3) 随机生成一个3x3的矩阵
print(uniform_data)
heatmap = sns.heatmap(uniform_data)
[[0.38344152 0.79172504 0.52889492]
[0.56804456 0.92559664 0.07103606]
[0.0871293 0.0202184 0.83261985]]
ax = sns.heatmap(uniform_data,vmin=0.2,vmax=0.5) 小于0.2显示一种颜色,大于0.5的显示一种颜色
normal_data = np.random.randn(3,3)
print(normal_data)
jeatmap = sns.heatmap(normal_data,center=0) center=0,相当于0点,大于0颜色越深数值越大,反之,同理
[[ 1.53502913 0.56644004 0.14926509]
[-1.078278 1.39547227 1.78748405]
[-0.56951726 0.17538653 -0.46250554]]
flights = sns.load_dataset('flights') flights也是seaborn内置的数据集
flights.head()
flights = flights.pivot('month','year','passengers') pivot行转列函数,即month是列
print(flights)
sns.heatmap(flights)
ax =sns.heatmap(flights,annot=True,fmt='d') annot:把数据插入进来 linewidth:设置格子之间的间距(图中格子是没有间距的) cmap:调色板 cbar=False 把图中右边的条形柱隐藏掉
fmt格式化,如果去掉图里面的数会乱码