1. 分位数计算案例与Python代码

案例1

Ex1: Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36],求Q1, Q2, Q3, IQR

Solving:

步骤:

1. 排序,从小到大排列data,data = [6, 7, 15, 36, 39, 40, 41, 42, 43, 47, 49]

2. 计算分位数的位置

3. 给出分位数

分位数计算法一

pos = (n+1)*p,n为数据的总个数,p为0-1之间的值

Q1的pos = (11 + 1)*0.25 = 3 (p=0.25) Q1=15

Q2的pos = (11 + 1)*0.5 = 6 (p=0.5) Q2=40

Q3的pos = (11 + 1)*0.75 = 9 (p=0.75) Q3=43

IQR = Q3 - Q1 = 28

import math

def quantile_p(data, p):

pos = (len(data) + 1)*p

#pos = 1 + (len(data)-1)*p

pos_integer = int(math.modf(pos)[1])

pos_decimal = pos - pos_integer

Q = data[pos_integer - 1] + (data[pos_integer] - data[pos_integer - 1])*pos_decimal

return Q

data = [6, 7, 15, 36, 39, 40, 41, 42, 43, 47, 49]

Q1 = quantile_p(data, 0.25)

print("Q1:", Q1)

Q2 = quantile_p(data, 0.5)

print("Q2:", Q2)

Q3 = quantile_p(data, 0.75)

print("Q3:", Q3)

分位数计算法二

pos = 1+ (n-1)*p,n为数据的总个数,p为0-1之间的值

Q1的pos = 1 + (11 - 1)*0.25 = 3.5 (p=0.25) Q1=25.5

Q2的pos = 1 + (11 - 1)*0.5 = 6 (p=0.5) Q2=40

Q3的pos = 1 + (11 - 1)*0.75 = 8.5 (p=0.75) Q3=42.5

import math

def quantile_p(data, p):

pos = 1 + (len(data)-1)*p

pos_integer = int(math.modf(pos)[1])

pos_decimal = pos - pos_integer

Q = data[pos_integer - 1] + (data[pos_integer] - data[pos_integer - 1])*pos_decimal

return Q

data = [6, 7, 15, 36, 39, 40, 41, 42, 43, 47, 49]

Q1 = quantile_p(data, 0.25)

print("Q1:", Q1)

Q2 = quantile_p(data, 0.5)

print("Q2:", Q2)

Q3 = quantile_p(data, 0.75)

print("Q3:", Q3)

案例2

给定数据集 data = [7, 15, 36, 39, 40, 41],求Q1,Q2,Q3

分位数计算法一

import math

def quantile_p(data, p):

data.sort()

pos = (len(data) + 1)*p

pos_integer = int(math.modf(pos)[1])

pos_decimal = pos - pos_integer

Q = data[pos_integer - 1] + (data[pos_integer] - data[pos_integer - 1])*pos_decimal

return Q

data = [7, 15, 36, 39, 40, 41]

Q1 = quantile_p(data, 0.25)

print("Q1:", Q1)

Q2 = quantile_p(data, 0.5)

print("Q2:", Q2)

Q3 = quantile_p(data, 0.75)

print("Q3:", Q3)

计算结果:

Q1 = 7 +(15-7)×(1.75 - 1)= 13

Q2 = 36 +(39-36)×(3.5 - 3)= 37.5

Q3 = 40 +(41-40)×(5.25 - 5)= 40.25

分位数计算法二

结果:

Q1: 20.25

Q2: 37.5

Q3: 39.75

2. 分位数解释

四分位数

概念:把给定的乱序数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。

第1四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。

第2四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。

第3四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

四分位距(InterQuartile Range, IQR)= 第3四分位数与第1四分位数的差距

确定p分位数位置的两种方法

position = (n+1)*p

position = 1 + (n-1)*p

3. 分位数在pandas中的解释

在python中计算分位数位置的方案采用position=1+(n-1)*p

案例1

import pandas as pd

import numpy as np

df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]), columns=['a', 'b'])

print("数据原始格式:")

print(df)

print("计算p=0.1时,a列和b列的分位数")

print(df.quantile(.1))

程序计算结果:

序号

a

b0

1

1

1

2

10

2

3

100

3

4

100

计算p=0.1时,a列和b列的分位数

a 1.3

b 3.7

Name: 0.1, dtype: float64

手算计算结果:

计算a列

pos = 1 + (4 - 1)*0.1 = 1.3

fraction = 0.3

ret = 1 + (2 - 1) * 0.3 = 1.3

计算b列

pos = 1.3

ret = 1 + (10 - 1)* 0.3 = 3.7

案例二

利用pandas库计算data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36]的分位数。

import pandas as pd

import numpy as np

dt = pd.Series(np.array([6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36])

print("数据格式:")

print(dt)

print('Q1:', df.quantile(.25))

print('Q2:', df.quantile(.5))

print('Q3:', df.quantile(.75))

计算结果

Q1: 25.5

Q2: 40.0

Q3: 42.5

4. 概括总结

自定义分位数python代码程序

import math

def quantile_p(data, p, method=1):

data.sort()

if method == 2:

pos = 1 + (len(data)-1)*p

else:

pos = (len(data) + 1)*p

pos_integer = int(math.modf(pos)[1])

pos_decimal = pos - pos_integer

Q = data[pos_integer - 1] + (data[pos_integer] - data[pos_integer - 1])*pos_decimal

Q1 = quantile_p(data, 0.25)

Q2 = quantile_p(data, 0.5)

Q3 = quantile_p(data, 0.75)

IQR = Q3 - Q1

return Q1, Q2, Q3, IQR

pandas中的分位数程序

直接调用.quantile(p)方法,就可以计算出分位数,采用method=2方法。

参考文献:

内容来源于网络如有侵权请私信删除

python 分位数 位置_Python解释数学系列——分位数Quantile相关推荐

  1. python四分位数_Python解释数学系列——分位数Quantile

    1. 分位数计算案例与Python代码 案例1 Ex1: Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36],求Q1, Q2, Q3, ...

  2. python分位数函数,Python解释数学系列——分位数Quantile

    跳转到我的博客 1. 分位数计算案例与Python代码 案例1 Ex1: Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36],求Q1, ...

  3. python图例位置_Python | 图例位置

    python图例位置 Legends are one of the key components of data visualization and plotting. Matplotlib can ...

  4. python函数调用位置_Python: 浅谈函数局部变量快在哪

    前言 这两天在 CodeReview 时,看到这样的代码 # 伪代码 import somelib class A(object): def load_project(self): self.proj ...

  5. python 梯度下降_Python解释的闭合形式和梯度下降回归

    python 梯度下降 机器学习 , 编程 (Machine learning, Programming) 介绍 (Introduction) Regression is a kind of supe ...

  6. python r转义_Python快速入门系列之二:还学不会我直播跪搓衣板

    Python作为一个,目前最火的编程语言之一,已经渗透到了各行各业.它易学好懂,拥有着丰富的库,功能齐全.人生苦短,就用Python. 这个快速入门系列分为六篇,包含了Python大部分基础知识,每篇 ...

  7. python 进度条_Python小程序系列——动态进度条(1)

    Python动态进度条I 开始我们的第一个Python程序. 显示一个动态进度条,在同一个位置显示从1%到100% 源代码附上来: import sys #有关Python运行环境的变量和函数impo ...

  8. 如何查看python解释器位置_Python:查看解释器的位置

    以前学Python时,有时出现这样的情况:明明记得装了scipy包,怎么打import scipy报错说我没这个包? 问题出在,你的电脑上安装了不止一个Python... 而每安装一个包,仅仅在这个P ...

  9. python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值

    使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...

最新文章

  1. 执行力的问题--系统的无奈
  2. OpenCV相机使用的实例(附完整代码)
  3. 属实逼真,决策树可视化!
  4. IDEA将Maven项目中src源代码下的xml配置文件编译进classes
  5. HTML与CSS基础之否定伪类(四)
  6. 《金色梦乡》金句摘抄(一)
  7. ajax preview,In jQuery, using ajaxSend to preview the url built
  8. Docker 禁止被列入美国“实体名单”的国家、企业、个人使用
  9. 当U盘内的文件夹都成了1KB的快捷方式的解决方法
  10. 《乐高EV3机器人搭建与编程》——2.1 零件储存箱
  11. 一些lightbox插件(弹出层)
  12. 《计算机网络 PDF》炸了!!!
  13. cmdn(聪明的女人)
  14. 基于ARM嵌入式系统的PC/104总线设计
  15. 多重序列比对 CLUSTALX
  16. 常见的浏览器兼容问题和解决方法
  17. 360与腾讯弹窗大战 数亿网民被迫围观
  18. 互联网产品经理的职责
  19. google的RateLimiter限流器的使用
  20. 【软考软件评测师】2019综合知识历年真题

热门文章

  1. 【毕业设计】jSP在线教学质量评价系统的设计与实现(源代码+论文)
  2. matlab图像水印技术研究,动态图像数字水印matlab的实现开题报告.doc
  3. 二叉树和等于某值路径_Go刷LeetCode系列:二叉树(3)二叉树路径和
  4. mysql 8 多线程_mysql8 参考手册--通用线程状态
  5. Python+OpenCV:图像修复(Image Inpainting)
  6. QList (链表) QVector (数组)
  7. 大端模式、小端模式、网络字节顺序与主机字节顺序
  8. 利用filebeat推送mysql慢查询日志
  9. Dos命令将合并两个文本文件的内容
  10. 【Cocos2d-X开发学习笔记】第05期:渲染框架之布景层类(CCLayer)的使用