【发布时间】:2019-02-09 18:50:06
【问题描述】:
我有一个 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 的问题?
【问题讨论】:
-
好吧,如果你通过skipna=True,我猜它会跳过它们。
-
如果你没有通过 skipna=True ,也就是说,如果它有 nan ,它将返回 nan
-
别问我们;我们是生物单位。尝试一下,看看会发生什么。加载具有一半
NaN值的 df 并播放几分钟。 -
关于生成 A、B 的方式的旁注。你可以只 A = np.random.randint(100, size=10)
-
Docs 没有对skipnan 的分位数函数的引用,这就是我问的原因.. DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation='linear') @ sacul 好心地在 np.nanpercentile 中突出显示了我不知道存在的正确比较器,谢谢大家