python中的分位数函数忽略NaN吗?

2024-05-04 16:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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个百分位数:

^{pr2}$

但是现在我在dfAB中放了一些nan,然后重新执行这个功能,显然它是不同的:

dfAB.loc[5:8]=np.nan
dfAB.quantile(0.75)

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

dfAB.mean(skipna=True)

因此,我得到的是分位数函数是否/如何处理NaN?在


Tags: 函数代码inimportpandasforasrange
1条回答
网友
1楼 · 发布于 2024-05-04 16:45:51

是的,这似乎就是pd.quantile处理NaN值的方式。为了说明这一点,您可以将结果与np.nanpercentile进行比较,后者明确地计算沿指定轴的数据的qth百分位,同时忽略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])

并确保它们是等价的

相关问题 更多 >