gpt4 book ai didi

python - python中的分位数函数是否忽略NaN?

转载 作者:行者123 更新时间:2023-12-03 15:49:39 24 4
gpt4 key购买 nike

我有一个 dfAB

import pandas as pd
import random

A = [ random.randint(0,100) for i in range(10) ]
B = [ random.randint(0,100) for i in range(10) ]

dfAB = pd.DataFrame({ 'A': A, 'B': B })
dfAB

我们可以采用分位数函数,因为我想知道列的第 75 个百分位数:
dfAB.quantile(0.75)

但是现在说我在 dfAB 中放入了一些 NaN 并重新执行该函数,显然它是不同的:
dfAB.loc[5:8]=np.nan
dfAB.quantile(0.75)

基本上,当我计算dfAB的平均值时,我通过skipna忽略Na,因为我不希望它们影响我的统计数据(我的代码中有很多,故意的,obv使它们为零没有帮助)
dfAB.mean(skipna=True)

因此,我得到的是分位数函数是否/如何解决 NaN?

最佳答案

是的,这似乎是 pd.quantile 的方式处理 NaN值。为了说明,您可以将结果与 np.nanpercentile 进行比较。 ,它明确地计算沿指定轴的数据的第 q 个百分位数,同时忽略 nan 值 (引自 docs ,我的重点):

>>> dfAB
A B
0 5.0 10.0
1 43.0 67.0
2 86.0 2.0
3 61.0 83.0
4 2.0 27.0
5 NaN NaN
6 NaN NaN
7 NaN NaN
8 NaN NaN
9 27.0 70.0

>>> dfAB.quantile(0.75)
A 56.50
B 69.25
Name: 0.75, dtype: float64

>>> np.nanpercentile(dfAB, 75, axis=0)
array([56.5 , 69.25])

并且看到它们是等价的

关于python - python中的分位数函数是否忽略NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52171333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com