gpt4 book ai didi

python - 为什么 pandas "rank"百分位数不介于 0 和 1 之间?

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:45 25 4
gpt4 key购买 nike

我经常使用 pandas,并且经常执行与以下类似的代码:

df['var_rank'] = df['var'].rank(pct=True)
print( df.var_rank.max() )

并且经常会得到大于 1 的值。无论我保留还是删除“na”值,这种情况仍然会发生。这显然很容易修复(只需除以最大排名的值),所以我不要求解决方法。我只是好奇为什么会发生这种情况,并且在网上没有找到任何线索。

有人知道为什么会发生这种情况吗?

一些非常简单的示例数据here (dropbox 链接 - 腌制的 Pandas 系列)。

我从 df.rank(pct=True).max() 得到的值为 1.0156 。我的其他数据的值高达 4 或 5。我通常使用非常困惑的数据。

最佳答案

您的数据不正确。

>>> s.rank(pct=True).max()
1.015625

s.sort(inplace=True)
>>> s.tail(7)
8 202512882
6 253661077
102 -
101 -
99 -
58 -
116 -
Name: Total Assets, dtype: object

>>> s[s != u'-'].rank(pct=True).max()
1.0

在 Pandas 0.18.0(上周发布)中,您可以指定 numeric only :

s.rank(pct=True, numeric_only=True)

我已经在 0.18.0 中尝试过上述方法,但似乎无法使其工作,因此您也可以执行此操作来对所有 float 和 int 值进行排名:

>>> s[s.apply(lambda x: isinstance(x, (int, float)))].rank(pct=True).max()
1.0

它创建一个 bool 掩码,确保每个值都是 int 或 float,然后对过滤结果进行排名。

关于python - 为什么 pandas "rank"百分位数不介于 0 和 1 之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36070946/

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