根据值的四分位数范围在新列中分配标签
Assign label in new column based on quartile range of values
我正在尝试根据数据集中一列的四分位数范围来标记值,但在合成两个步骤时遇到了问题。下面是一个玩具数据集:
fruit rating_store rating_home
apple 1.0 .8
pear .8 .9
berry .9 .4
tomato .7 .5
orange .3 .6
banana .2 .4
... ... ...
首先,我试图确定 rating_home
的四分位数范围,我可以用它来做:
qrating_home = pd.cut(df['rating_home'], 4).value_counts().reset_index()
但是,我现在无法为 qrating_home
范围分配标签(例如“低”、“low_med”、“high_med”、“高”)值 在 数据集中。期望的输出:
fruit rating_store rating_home rating_home_quartile
apple 1.0 .8 high
pear .8 .9 high
berry .9 .4 low
tomato .7 .5 low
orange .3 .6 low_med
banana .2 .4 low
... ... ...
这个 post 非常有帮助,但对范围进行了硬编码:
因为我的数据集可能会随着更多数据的进入而改变,所以我需要在每次 运行 我的代码时计算范围。感谢您的帮助!
我想你想要:
df['rating_home_quartile'] = pd.cut(df['rating_home'], bins=4,
labels=['low', 'low_med', 'high_med', 'high'])
听起来您想将数据分成四分位数。 pd.qcut
可以轻松地对四分位数、五分位数、十分位数等执行此操作
df['rating_home_quartile'] = pd.qcut(df['rating_home'], q=4, labels=['low', 'low_med', 'high_med', 'high'])
q
是分位数
labels
为对应的分位数名称;确保它与给定 q
的分位数匹配
我正在尝试根据数据集中一列的四分位数范围来标记值,但在合成两个步骤时遇到了问题。下面是一个玩具数据集:
fruit rating_store rating_home
apple 1.0 .8
pear .8 .9
berry .9 .4
tomato .7 .5
orange .3 .6
banana .2 .4
... ... ...
首先,我试图确定 rating_home
的四分位数范围,我可以用它来做:
qrating_home = pd.cut(df['rating_home'], 4).value_counts().reset_index()
但是,我现在无法为 qrating_home
范围分配标签(例如“低”、“low_med”、“high_med”、“高”)值 在 数据集中。期望的输出:
fruit rating_store rating_home rating_home_quartile
apple 1.0 .8 high
pear .8 .9 high
berry .9 .4 low
tomato .7 .5 low
orange .3 .6 low_med
banana .2 .4 low
... ... ...
这个 post 非常有帮助,但对范围进行了硬编码:
我想你想要:
df['rating_home_quartile'] = pd.cut(df['rating_home'], bins=4,
labels=['low', 'low_med', 'high_med', 'high'])
听起来您想将数据分成四分位数。 pd.qcut
可以轻松地对四分位数、五分位数、十分位数等执行此操作
df['rating_home_quartile'] = pd.qcut(df['rating_home'], q=4, labels=['low', 'low_med', 'high_med', 'high'])
q
是分位数labels
为对应的分位数名称;确保它与给定q
的分位数匹配