四分位数与pandas中的quantile函数

1.分位数概念

统计学上的有分位数这个概念,一般用p来表示。原则上p是可以取0到1之间的任意值的。但是有一个四分位数是p分位数中较为有名的。

所谓四分位数;即把数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。

为了更一般化,在计算的过程中,我们考虑p分位。当p=0.25 0.5 0.75 时,就是在计算四分位数。

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

2.计算方法

1)确定p分位数的位置(有两种方法):

方法1 pos = (n+1)*p

方法2 pos = 1+(n-1)*p(pandas 中使用的是方法2)

2)计算分位数,一般有五种方法,pandas里面的quantile函数中,interpolation参数来控制(见后)

3.quantile函数

pandas库quantile函数可以很方便的帮助我们进行分位数的计算。

DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation=’linear’)

常用参数:

q : 数字或者是类列表,范围只能在0-1之间,默认是0.5,即中位数-第2四分位数

axis :计算方向,可以是 {0, 1, ‘index’, ‘columns’}中之一,默认为 0

interpolation(插值方法):可以是 {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}之一,默认是linear。

这五个插值方法是这样的:当选中的分为点位于两个数数据点 i and j 之间时:

  • linear: i + (j - i) * fraction, fraction由计算得到的pos的小数部分(后面有例子);
  • lower: i.
  • higher: j.
  • nearest: i or j whichever is nearest.
  • midpoint: (i + j) / 2.

举例

  1. import pandas as pd
  2. df=pd.read_csv('data/练习.csv')
  3. df.sort_values("Height")

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

  1. .dataframe tbody tr th {
  2. vertical-align: top;
  3. }
  4. .dataframe thead th {
  5. text-align: right;
  6. }
ID Height
0 1101 2
3 1201 4
2 1103 5
1 1102 7
4 1203 8
5 1205 12

参数q默认为0.5(中位数)

  1. df['Height'].quantile()
  1. 6.0

参数interpolation的不同方法

  1. df['Height'].quantile(q=0.5,interpolation="linear")
  1. 6.0
  1. df['Height'].quantile(q=0.5,interpolation="lower")
  1. 5
  1. df['Height'].quantile(q=0.5,interpolation="higher")
  1. 7
  1. df['Height'].quantile(q=0.5,interpolation="midpoint")
  1. 6.0
  1. df['Height'].quantile(q=0.5,interpolation="nearest")
  1. 5

说明:df['Height']中一共有6个数据,中位数的位置pos=1+(6-1)*0.5=3.5,这个位置介于5和7之间,则i=5,j=7,fraction=0.5

  • linear:i + (j - i) * fraction=5+(7-5)*0.5=6
  • lower:i=5
  • higher:j=7
  • midpoint:(i+j)/2=(5+7)/2=6
  • nearest:5更接近(这个没太搞懂,貌似是fraction更靠近的那个整数)

参数q为列表类型,计算四分位数

  1. df['Height'].quantile([0.25,0.5,0.75])
  1. 0.25 4.25
  2. 0.50 6.00
  3. 0.75 7.75
  4. Name: Height, dtype: float64

四分位数与pandas中的quantile函数的更多相关文章

  1. 分位函数(四分位数)概念与pandas中的quantile函数

    p分位函数(四分位数)概念与pandas中的quantile函数 函数原型 DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpola ...

  2. pandas中的quantile函数

    https://blog.csdn.net/weixin_38617311/article/details/87893168 data.price.quantile([0.25,0.5,0.75]) ...

  3. 使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中

    参考链接:https://www.makcyun.top/web_scraping_withpython2.html #!/usr/bin/env python # -*- coding: utf-8 ...

  4. Python学习教程:Pandas中第二好用的函数

    从网上看到一篇好的文章是关于如何学习python数据分析的迫不及待想要分享给大家,大家也可以点链接看原博客.希望对大家的学习有帮助. 本次的Python学习教程是关于Python数据分析实战基础相关内 ...

  5. pandas 之 groupby 聚合函数

    import numpy as np import pandas as pd 聚合函数 Aggregations refer to any data transformation that produ ...

  6. pandas中的分组技术

    目录 1  分组操作 1.1  按照列进行分组 1.2  按照字典进行分组 1.3  根据函数进行分组 1.4  按照list组合 1.5  按照索引级别进行分组 2  分组运算 2.1  agg 2 ...

  7. 数据分析面试题之Pandas中的groupby

      昨天晚上,笔者有幸参加了一场面试,有一个环节就是现场编程!题目如下:   示例数据如下,求每名学生(ID)对应的成绩(score)最高的那门科目(class)与ID,用Python实现: 这个题目 ...

  8. pandas中的空值处理

    1.空值 1.1 有两种丢失数据: None: Python自带的数据类型 不能参与到任何计算中 np.nan: float类型 能参与计算,但结果总是nan # None+2 # 报错 # np.n ...

  9. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

随机推荐

  1. (一)DAO设计及BaseDAO和BookDAO的实现

    1.总体架构 MVC 设计模式:Model:POJO(Plain Old Java Object) Controller:ServletView:JSP + EL + JSTL 2.技术选型 数据库: ...

  2. 删除节点与插入节点 & innerHTML

    1.测试removeChild()方法: 删除节点dom9.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" &q ...

  3. tomcat漏洞利用总结

    一.后台war包getshell 漏洞利用: tomcat在conf/tomcat-users.xml配置用户权限 <?xml version="1.0" encoding= ...

  4. PAT 1036 Boys vs Girls (25分) 比大小而已

    题目 This time you are asked to tell the difference between the lowest grade of all the male students ...

  5. Rocket - debug - Example: Accessing Registers Using Abstract Command

    https://mp.weixin.qq.com/s/RdJzE06mMkh2x__vVj_fEA 介绍riscv debug接口的使用实例:使用抽象命令读取寄存器. 1. Read s0 using ...

  6. JavaScript (五) js的基本语法 - - - 面向对象、工程模式、内置对象、JSON

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.编程思想 1.定义: 编程思想:把一些生活中做事的经验融入到程序中 面向过程:凡事都要亲力亲为,每件 ...

  7. Java实现 LeetCode 521 最长特殊序列 Ⅰ(出题人:“就是喜欢看你们不敢相信那么简单,又不敢提交的样子。”)

    521. 最长特殊序列 Ⅰ 给定两个字符串,你需要从这两个字符串中找出最长的特殊序列.最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列可以通过删去字符串中 ...

  8. Java实现 LeetCode 115 不同的子序列

    115. 不同的子序列 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...

  9. Java实现 蓝桥杯 乘积最大

    输入输出样例 输入样例#1: 4 2 1231 输出样例#1: 62 import java.util.Scanner; public class chengjizuida { public stat ...

  10. java实现第六届蓝桥杯打印大X

    打印大X 打印大X 小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度. 为了便于比对空格,所有的空白位置都以句点符来代替. 要求输入两个整数m n,表示笔的宽度,X的高度.用 ...