当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas DataFrame quantile方法用法及代码示例


Pandas DataFrame.quantile(~) 方法返回指定分位数处的插值。

参数

1.q | array-likefloat

要计算的所需分位数,必须介于 0(含)和 1(含)之间。默认情况下, q=0.5 ,即计算第 50 个百分位数的值。

2. axis | Noneintstring | optional

是否按行或按列计算分位数:

说明

0"index"

计算每列的分位数。

1"columns"

计算每行的分位数。

默认情况下,axis=0

3. numeric_only | boolean | optional

是否仅计算数字类型的行/列的分位数。如果设置为 False ,则还将计算具有 datetimetimedelta 的行/列的分位数。默认情况下,numeric_only=True

4. interpolation | string | optional

当给定百分位数位于两个 data-points 之间时,如何对值进行插值,例如 ij,其中 i<j

说明

"linear"

标准线性插补

"lower"

返回i

"higher"

返回j

"midpoint"

返回(i+j)/2

"nearest"

返回 ij ,以较接近者为准

默认情况下,interpolation="linear"

返回值

如果 q 是标量,则返回 Series。否则,返回DataFrame

例子

考虑以下 DataFrame :

df = pd.DataFrame({"A":[2,4,6,8],"B":[5,6,7,8]})
df



   A  B
0  2  5
1  4  6
2  6  7
3  8  8

按列计算百分位

要计算每列的第 50 个百分位数:

df.quantile()   # q=0.5



A    5.0
B    6.5
Name: 0.5, dtype: float64

这里,返回类型是Series。为了解释输出,A 列中的值正好有 50% 小于 5.0

按行计算百分位

要计算每行的第 30 个百分位数:

df.quantile(q=0.3, axis=1)



0    2.9
1    4.6
2    6.3
3    8.0
Name: 0.3, dtype: float64

计算多个百分位数

要获取每列第 50 个和 75 个百分位数的值:

df.quantile([0.5, 0.75])   # returns a DataFrame



      A    B
0.50  5.0  6.50
0.75  6.5  7.25

更改插值方法

考虑以下 DataFrame :

df = pd.DataFrame({"A":[2,4,6,8]})
df



   A  
0  2
1  4
2  6
3  8
线性

考虑指定分位数对应的值不存在的情况:

df.quantile(0.5)   # interpolation="linear"



A    5.0
Name: 0.5, dtype: float64

此处,由于 A 列中不存在对应于第 50 个百分位数的值,因此该值在 4 和 6 之间线性插值。

降低
df.quantile(0.5, interpolation="lower")



A    4
Name: 0.5, dtype: int64

同样,由于 50% 分位数不存在,我们需要执行插值。我们知道它在值 4 和 6 之间。通过传入 "lower" ,我们选择较低的值,即本例中的 4。

更高
df.quantile(0.5, interpolation="higher")



A 6
Name: 0.5, dtype: int64

"lower" 相同的逻辑,但我们采用较高的值。

这是相同的 df 供您参考:

df



   A  
0  2
1  4
2  6
3  8
最近的
df.quantile(0.5, interpolation="nearest")



A    6
Name: 0.5, dtype: int64

通过传入 "nearest" ,我们不再总是选择较低或较高的值,而是采用最接近的值。在本例中,50% 分位数为 5,恰好位于 4 和 6 的中间。在这种情况下,选择较高的值。

中点
df.quantile(0.5, interpolation="midpoint")



A    5.0
Name: 0.5, dtype: float64

在这里,我们只取下限值和上限值的中点,因此 (4+6)/2=5

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | quantile method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。