用Python学分析:集中与分散
散点图进阶,结合箱体图与直方图对数据形成全面的认识
描述数据集中趋势的分析量:
均值 - 全部数据的算术平均值
众数 - 一组数据中出现次数最多的变量值
中位数 - 一组数据经过顺序排列后处于中间位置上的变量值
描述数据离散程度的分析量:
方差 - 一组数据各变量值与其平均值离差平方和的平均数
标准差 - 方差的平方根
偏态 - 描述数据分布形态的统计量,其描述的是某总体取值分布的对称性。偏度 = 三阶中心距 / 标准差的三次方
峰度 - 描述总体中所有取值分布形态陡缓程度的统计量,这个统计量需要与正态分布相比较。 峰度 = 四阶中心距 / 方差平方(标准差四次方) - 3
描述性分析数据的计算:
# 准备数据
import numpy as np
import matplotlib.pyplot as plt n = 1000
x = np.random.randn(n)
y = [int((item)*100) for item in np.random.randn( n )] #100以内的正整数随机数 # 均值μ
mu = np.mean(y)
# 标准差δ sigma = np.sqrt(np.sum(np.square( y - mu ))/n)
sigma = np.std(y)
# 峰度(公式准确度待确认)
kurtosis = np.sum(np.power((y - mu),4))/(n) # 四阶中心距
kurtosis = kurtosis / np.power(sigma,4)-3 # 峰度 = 四阶中心距 / 方差平方(标准差四次方) - 3
# 偏度
skewness = np.sum(np.power((y - mu),3))/(n) # 三阶中心距
skewness = skewness / np.power(sigma,3) # 偏度 = 三阶中心距 / 标准差的三次方 print(mu, sigma,skewness, kurtosis)
结果:
-0.944 105.50647783 0.0750892544722 -0.171492308767
图表显示
# 图表显示
fig = plt.figure( figsize = ( 8, 6 )) # 设置图表大小
#设置图表的大小:[左, 下, 宽, 高] 规定的矩形区域 (全部是0~1之间的数,表示比例)
rect_1 = [0.15, 0.30, 0.7, 0.55]
rect_2 = [0.85, 0.30, 0.15, 0.55]
rect_3 = [0.15, 0.05, 0.7, 0.2]
fig_1 = plt.axes(rect_1) # 第一个图表
fig_2 = plt.axes(rect_2) # 第二个图表
fig_3 = plt.axes(rect_3) # 第三个图表
#设置图表公共变量
title_size = 13
inner_color = 'cyan'
outer_color = 'teal'
# 第一个图表:散点图
fig_1.scatter( x, y, s = 20, color = inner_color, edgecolor = outer_color, alpha = 0.6)
fig_1.set_title('散点图 Scatter', fontsize = title_size)
fig_1.set_ylim( min(y),max(y)+50 )
fig_1.grid(True) # 第二个图表:箱体图
fig_2.boxplot(y,
widths = 0.55,
patch_artist = True, # 要求用自定义颜色填充盒形图,默认白色填充
boxprops = {'color':outer_color,'facecolor':inner_color, }, # 设置箱体属性,填充色和边框色
flierprops = {'marker':'o','markerfacecolor':inner_color,'color':outer_color,}, # 设置异常值属性,点的形状、填充色和边框色
meanprops = {'marker':'h','markerfacecolor':outer_color}, # 设置均值点的属性,点的形状、填充色
medianprops = {'linestyle':'-','color':'red'} # 设置中位数线的属性,线的类型和颜色
)
fig_2.set_ylim( fig_1.get_ylim()) #设置箱体图与散点图同一纵坐标轴
fig_2.get_yaxis().set_visible(False) #关闭坐标轴
fig_2.get_xaxis().set_visible(False) #关闭坐标轴
# 去除边框显示
remove_col = ['top','bottom','left','right']
for item in remove_col:
fig_2.spines[item].set_visible(False)
fig_2.spines[item].set_position(('data',0))
fig.text(0.86, 0.84,'箱体图 Boxplot', fontsize = title_size ) # 第三个图表:直方图
n, bins, patches = fig_3.hist( y, color = inner_color, alpha = 0.8, edgecolor = outer_color )
fig_3.set_ylim([0,max(n)+50])
fig_3.spines['top'].set_visible(False) # 去除边框显示
fig_3.spines['top'].set_position(('data',0)) # 去除边框刻度显示
fig_3.spines['right'].set_color('none') # 去除边框显示
fig_3.spines['right'].set_position(('data',0)) # 去除边框刻度显示
fig.text(0.17, 0.23,'直方图 Hist', fontsize = title_size ) # 文本信息
fig.text(0.9, .20, '均值 $\mu = {0:.2f}$'.format(mu))
fig.text(0.9, .15, '标准差 $\sigma = {0:.2f}$'.format(sigma))
fig.text(0.9, .10, '偏度 $\gamma 1 = {0:.2f}$'.format(skewness))
fig.text(0.9, .05, '峰度 $\gamma 2 = {0:.2f}$'.format(kurtosis))
plt.show()
结果:

用Python学分析:集中与分散的更多相关文章
- 用Python学分析 - 单因素方差分析
单因素方差分析(One-Way Analysis of Variance) 判断控制变量是否对观测变量产生了显著影响 分析步骤 1. 建立检验假设 - H0:不同因子水平间的均值无差异 - H1:不同 ...
- 用Python学分析 - 二项分布
二项分布(Binomial Distribution)对Bernoulli试验序列的n次序列,结局A出现的次数x的概率分布服从二项分布- 两分类变量并非一定会服从二项分布- 模拟伯努利试验中n次独立的 ...
- 用Python学分析 - t分布
1. t分布形状类似于标准正态分布2. t分布是对称分布,较正态分布离散度强,密度曲线较标准正态分布密度曲线更扁平3. 对于大型样本,t-值与z-值之间的差别很小 作用- t分布纠正了未知的真实标 ...
- 用Python学分析 - 正态分布
正态分布(Normal Distribution) 1.正态分布是一种连续分布,其函数可以在实线上的任何地方取值. 2.正态分布由两个参数描述:分布的平均值μ和方差σ2 . 3.正态分布的取值可以从负 ...
- 用Python学分析 - 散点图
# 运用散点图对数据分布得到直观的认识 import numpy as np import matplotlib.pyplot as plt # 设计 x, y 轴 n = 10000 x = np. ...
- 《用 Python 学微积分》笔记 3
<用 Python 学微积分>原文见参考资料 1. 16.优化 用一个给定边长 4 的正方形来折一个没有盖的纸盒,设纸盒的底部边长为 l,则纸盒的高为 (4-l)/2,那么纸盒的体积为: ...
- 《用 Python 学微积分》笔记 2
<用 Python 学微积分>原文见参考资料 1. 13.大 O 记法 比较两个函数时,我们会想知道,随着输入值 x 的增长或减小,两个函数的输出值增长或减小的速度究竟谁快谁慢.通过绘制函 ...
- Python学到什么程度就可以去找工作?掌握这4点足够了!
大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问 ...
- Python学到什么程度才可以去找工作?掌握这4点足够了!
大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...
随机推荐
- Error:unsupported class file version 52.0问题的解决
这个问题主要的原因是依赖包的编译版本比主程序的编译版本高,导致主程序无法正常编译或运行,解决这个问题无非两招: 1.提升主程序的编译器版本,用最新的编译器编译主程序,这样就可以兼容那个依赖包 2.降低 ...
- 搭建centos7的开发环境2-单机版Hadoop2.7.3配置
最近公司准备升级spark环境,主要原因是生产环境的spark和hadoop版本都比较低,但是具体升级到何种版本还不确定,需要做进一步的测试分析.这个任务对于大数据开发环境配置有要求,这里记录一下配置 ...
- 如何在python脚本开发做code review
在软件项目开发中,我们经常提到一个词“code review”.code review中文翻译过来就是代码评审或复查,简而言之就是编码完成后由其他人通过阅读代码来检查代码的质量(可编译.可运行.可读. ...
- Python的编码风格
1.采用四个空格作为缩进 2.一行代码不要超多79个字符 3.使用空行分割类,函数,以及大块代码 4.注释独占一行 5.使用文档字符串 6.操作符的两侧,逗号后面都要加空格(但是括号的里侧是不加的) ...
- SOFA 源码分析 — 负载均衡和一致性 Hash
前言 SOFA 内置负载均衡,支持 5 种负载均衡算法,随机(默认算法),本地优先,轮询算法,一致性 hash,按权重负载轮询(不推荐,已被标注废弃). 一起看看他们的实现(重点还是一致性 hash) ...
- servlet什么时候被实例化?【转】
如果没有设置loadOnStartup,则第一次请求的时候实例化 分三种情况:loadOnStartup < 0 即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做 ...
- Flask入门之自定义过滤器(匹配器)
1. 动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...
- Python 基础【一】
python运行流程 一.变量及注释 命名: 合法-变量名由字母.数字和下划线组成,并且不能以数字开头.以下保留字不可以当变量名: ['False', 'None', 'True', 'and', ' ...
- Centos制作本地yum源
本地YUM源制作 1. YUM相关概念 1.1. 什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shel ...
- github page 配置hexo 博客 的常见错误
缘起 最近看到好多的公众号作者推荐大家搭建自己的博客,自己手痒也搭建了一个个人博客lumang,具体过程就是一开始上网搜索一番教程,按照教程开始搭建,由于是windows的环境,同时教程也有很多的老旧 ...