绘图

 

 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的元组,可选

输出形状。如果给定的形状是例如,则 绘制样本。如果大小为(默认),单值,如果返回,并都标量。否则,绘制样本。(m, n, k)kNoneshapescalenp.broadcast(shape, scale).size

返回:
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(meancovsizecheck_validtol)
参数:
mean : 1-D array_like,长度为N.

N维分布的平均值。

cov : 2-D array_like,形状(N,N)

协方差矩阵的分布。对于正确的采样,它必须是对称的和正半定的。

size : int或int的元组,可选

给定的形状,例如,(m,n,k)m*n*k产生的样品,并包装在一 -by- Ñ -by- ķ布置。因为每个样本都是N维,所以输出形状是(m,n,k,N)如果未指定形状,则返回单个(N- D)样本。

check_valid : {'warn','raise','ignore'},可选

当协方差矩阵不是半正的时候的行为。

tol : float,可选

检查协方差矩阵中的奇异值时的容差。

返回:
 : ndarray

如果提供的话,绘制的样本,形状大小如果没有,形状是(N,)

换句话说,每个条目out[i,j,...,:]是从分布中绘制的N维值。

 
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格式化,如果去掉图里面的数会乱码

原文地址:https://www.cnblogs.com/Bin-y/p/10738767.html