关于Pandas版本: 本文基于 pandas2.2.0 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
传送门: Pandas API参考目录
传送门: Pandas 版本更新及新特性
传送门: Pandas 由浅入深系列教程
本节目录
Pandas.Series.quantile()
Series.quantile
方法用于返回 Series
行或列的分位数。
⚠️ 注意 :
- 缺失值 不会参与计算。例如[2, 4, 6, 8, pd.NA],元素数量 n = 4 n=4 n=4
Series.quantile
所用计算公式,不同于【普通高中教科书 人教版2022年7月第4次印刷 数学B版 必须 第二册】第65页学到的方法。如果你需要使用教科书上的方法,则需要自己写函数。
语法:
Series.quantile(q=0.5, interpolation=‘linear’)
返回值:
- float or Series
- 如果同时计算多个分位数,则返回
Series
。 - 如果只计算一个分位数,则返回
float
。
- 如果同时计算多个分位数,则返回
参数说明:
q 分位
-
q : float or array-like, default 0.5 (50% quantile) 例1
q
参数,用于指分位,取值范围0 <= q <= 1
,默认q=0.5
即计算 50% 分位数(中位数)。 该参数接受以下类型的传入:- float: 浮点数,适用于只计算一个分位数。
- array-like: 一个 类似数组,适用于同时计算多个分位数。
interpolation 插值法
-
interpolation : {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}
interpolation
参数,用于控制当 p o s pos pos 不是整数时的取值方法,默认interpolation=‘linear’
使用线性插值法:例2⚠️ 分位数线性插值法 :
在数组 x x x 求分位数,分为两个步骤:
- 求位置
p
o
s
pos
pos: 将数组从小到大排列,定位到数组的
p
%
p\%
p% 位置。
- p o s = 1 + ( n − 1 ) ⋅ p % pos = 1 + (n - 1) \cdot p\% pos=1+(n−1)⋅p%
- 其中, p o s pos pos 是分位数在数组中的位置, n n n 是元素总数量, p % p\% p% 是分位点。
- 求分位数
Q
p
Q_{p}
Qp: 在
p
o
s
pos
pos 位置取值。
- 如果 p o s pos pos 是整数: Q p = x p o s Q_{p} = x_{pos} Qp=xpos
- 如果
p
o
s
pos
pos 不是整数:
- 设 i i i 为小于 p o s pos pos 的最小整数, j j j 为大于 p o s pos pos 的最小整数, δ δ δ 为 p o s pos pos 的小数部分
- $Q_{p} = {x_i} + ({x_j} - {x_i}) \cdot δ $
- ‘linear’: 线性插值法, $Q_{p} = {x_i} + ({x_j} - {x_i}) \cdot δ $
- ‘lower’: 较小值 Q p = x i Q_{p} = {x_i} Qp=xi,
- ‘higher’: 较大值 Q p = x j Q_{p} = {x_j} Qp=xj,
- ‘nearest’: 最近值(较小值 x i {x_i} xi 或 较大值 x j {x_j} xj ,哪个近就取哪个) ,
- ‘midpoint’: 中间值 Q p = x i + x j 2 Q_{p} = \frac{{x_{\text{i}} + x_{\text{j}}}}{2} Qp=2xi+xj ,其实就是较小值和较大值的平均值。
- 求位置
p
o
s
pos
pos: 将数组从小到大排列,定位到数组的
p
%
p\%
p% 位置。
相关方法:
➡️ 相关方法
示例:
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。
例1:计算一个或多个分位数()
例1-1、创建演示数据
import pandas as pd
s = pd.Series([2, 4, 6, 8, pd.NA])
s
0 2
1 4
2 6
3 8
4 <NA>
dtype: object
例1-2、只计算25%分位数(第一四分位数)
s.quantile(q=0.25)
第1组数据 3.5
第2组数据 4.0
Name: 0.25, dtype: object
注意观察计算结果,但是在计算过程中,并没有被计算到元素数量 n n n
例1-3、同时计算25%分位数(第一四分位数)和50%分位数(中位数)
s.quantile(q=[0.25, 0.5])
0.25 3.5
0.50 5.0
dtype: object
例2:使用不同的插值法计算分位数
例2-1、默认 interpolation=‘linear’
使用线性插值法
import pandas as pd
s2 = pd.Series([1, 2, 3, 4])
s2.quantile([0.25, 0.5])
0.25 1.75
0.50 2.50
dtype: float64
例2-2、使用平均值插值法
s2.quantile([0.25, 0.5], interpolation='midpoint')
0.25 1.5
0.50 2.5
dtype: float64