python - 在 Pandas 数据框中确定一个值所在的分位数

标签 python pandas quantile

我有一个包含几列的 Pandas 数据框。对于每一列,我想计算某些百分位数。然后我想用每个观察值所在的百分位数替换我的数据框。

import pandas as pd
M = np.random.uniform(0, 100, (10, 6))
df = pd.DataFrame(M, columns=['c%i'%i for i in range(6)])

>>> df[:2]
              c0         c1         c2         c3         c4         c5
    0  24.883165   2.299054  11.002427  98.711018  39.042343  50.408190
    1  42.099085  78.028507  25.099002  39.099628  38.687483  15.794404

df.quantile([.1, .5, .9])

                    c0         c1         c2         c3         c4         c5
        0.1  21.418274   7.094343  10.904711  25.014356  15.958873  21.984237
        0.5  41.793102  36.973471  29.031637  64.246471  41.136274  42.408574
        0.9  75.724554  62.274133  86.604768  93.690257  73.757992  89.365606

例如,在第 0 行中,c0=24.883。最大的 c0 分位数 q_c0,其中 24.883<=q_c0 为 0.5。在我的新数据框中,我想用 0.5 替换 24.883。

最佳答案

如何使用qcut():

import pandas as pd
import numpy as np
M = np.random.uniform(0, 100, (10, 6))
df = pd.DataFrame(M, columns=['c%i'%i for i in range(6)])

bins = [0.0, 0.1, 0.5, 0.9, 1.0]
df.apply(lambda s:pd.qcut(s, bins, bins[1:]).astype(float))

关于python - 在 Pandas 数据框中确定一个值所在的分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821520/

相关文章:

python - bool 系列键将被重新索引以匹配 DataFrame 索引

python - 如果 Pandas 小于该值,则将列中的值设置为等于 5% 分位数

python - 应用引擎 : "URLFetch is not available in this environment."

python - 如何等待并在同一行python上打印

python - Pandas 在时间序列上的切片似乎与列表切片不一致

python - matlab中分位数的等效python命令

r - 如何在数据帧上应用分位数

python - 仅使用线函数绘制分形树

python - 在python中绘制 float 和整数的直方图

python - 定位非数字索引值的数字位置