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

问题描述 投票:1回答:1

我有一个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的问题?

python pandas quantile
1个回答
1
投票

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

qazxswpoi

并且看到它们是等价的

© www.soinside.com 2019 - 2024. All rights reserved.