gpt4 book ai didi

python - 在 pandas python 中对 qcut 的五分位数输出进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:42 24 4
gpt4 key购买 nike

我有一个包含 499 条记录的埃博拉数据集。我试图根据概率(概率变量)找到每个五分位数中的观察次数。观察次数应分为 0-20%、20-40% 等类别。我认为这样做的代码是,

test = pd.qcut(ebola.prob,5).value_counts()

返回

[0.044, 0.094]    111
(0.122, 0.146] 104
(0.106, 0.122] 103
(0.146, 0.212] 92
(0.094, 0.106] 89

我的问题是如何对其进行排序以返回 0-20%、20-40% 40-60% 60-80% 80-100% 的正确观测值数量?

我试过了

test.value_counts(sort=False)

返回

104    1
89 1
92 1
103 1
111 1

这是订单 104,89,92,103,111 吗?每个五分位数?

我很困惑,因为如果我查看第一段代码的概率输出,它看起来应该是 111,89,103,104,92?

最佳答案

你所做的基本上是正确的,但你可能有两个问题:

  1. 我认为您使用的是 pd.cut() 而不是 pd.qcut()
  2. 您应用 value_counts() 的次数过多。

(1) 你可以在这里引用这个问题here ;当您使用 pd.qcut() 时,您应该在每个 bin 中拥有相同数量的记录(假设您的总记录可以被 bin 的数量整除),而您没有。也许检查并确保您使用的是您打算使用的那个。

这里有一些随机数据来说明(2):

>>> np.random.seed(1234)
>>> arr = np.random.randn(100).reshape(100,1)
>>> df = pd.DataFrame(arr, columns=['prob'])
>>> pd.cut(df.prob, 5).value_counts()

(0.00917, 1.2] 47
(-1.182, 0.00917] 34
(1.2, 2.391] 9
(-2.373, -1.182] 8
(-3.569, -2.373] 2

添加排序标志会得到你想要的东西

>>> pd.cut(df.prob, 5).value_counts(sort=False)

(-3.569, -2.373] 2
(-2.373, -1.182] 8
(-1.182, 0.00917] 34
(0.00917, 1.2] 47
(1.2, 2.391] 9

或使用pd.qcut()

>>> pd.qcut(df.prob, 5).value_counts(sort=False)

[-3.564, -0.64] 20
(-0.64, -0.0895] 20
(-0.0895, 0.297] 20
(0.297, 0.845] 20
(0.845, 2.391] 20

关于python - 在 pandas python 中对 qcut 的五分位数输出进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33450080/

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