按四分位数分类的连续变量?

数据挖掘 Python 统计数据 熊猫
2022-02-15 05:30:11

让我们留下一个具有连续变量的字段,例如排队等候的人数。我想采用这些值并根据四分位数创建一个分类值。假设我的值范围是 1 到 80,四分位数告诉我“非常短”的行少于 5 人,“短”的行是 6 到 30,“长”的行是 31 到 50,“很长”行>=51

我可以想出不同的方法在 python/pandas/numpy 中编写它,但有些事情告诉我,你们中的一个人可以想出一个简短而优雅的方法/片段。请注意,我希望该方法还生成四分位数,这是我以前在 Python 中没有真正做过的事情。

3个回答

Panda 的分类数据类型专为此类分析而设计, pandas.cut可以除以用户定义的 bin,pandas.qcut可以创建基于分位数的离散化。像这样的东西:

import numpy as np
import pandas as pd

df = pd.DataFrame({'value': np.random.randint(1, 80, 20)}) 
df['group'] = pd.cut(df.value,
                     bins=[0, 5, 31, 51, 80],
                     labels=["very short", "short", "long", "very long"])

除非我完全误解了你,否则我认为scipy.stats中的 mquantiles 很容易做到你想要的。

我可能来晚了一点,但我认为这就是你要找的:

pandas.qcut