单变量分析绘图
直方图
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy import stats,integrate
import pandas as pd
%matplotlib inline
sns.set(color_codes=True)
np.random.seed(sum(map(ord,"distribution")))
x = np.random.normal(size=100)
sns.distplot(x,bins=20,kde=True)
#bins: 设置分桶数
#kde控制是否画kde曲线
map()函数:
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
ord()函数:
ord()函数它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值。如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。
np.random.seed()函数
设置相同的seed,每次生成的随机数相同。
数据分布情况
x = np.random.gamma(6, size=200)
sns.distplot(x, kde=False, fit=stats.gamma) #实例化伽玛分布
根据均值和协方差生成数据
np.random.multivariate_normal生成一个服从多元正态分布的数组
multivariate_normal(mean, cov, size=None, check_valid=None, tol=None)
mean:均值,维度为1,必选参数;
cov:协方差矩阵,必选参数;
size: 指定生成矩阵的维度,若size=(1, 1, 2),则输出的矩阵的 shape 即形状为 1X1X2XN(N为mean的#长度);
check_valid:可取值 warn,raise以及ignore;
tol:检查协方差矩阵奇异值时的公差,float类型
mean, cov = [0, 1], [(1, .5), (.5, 1)]
#两个相关的正态分布
data = np.random.multivariate_normal(mean, cov, 200)
#依据指定的均值和协方差生成数据,生成二维数组
df = pd.DataFrame(data, columns=["x", "y"])
df.tail()
x | y | |
---|---|---|
195 | -0.885440 | -0.275349 |
196 | -0.678798 | 1.505844 |
197 | 1.601188 | 2.096382 |
198 | -0.398727 | 1.388353 |
199 | -0.051887 | 0.427285 |