【问题标题】:Assign label in new column based on quartile range of values根据值的四分位数范围在新列中分配标签
【发布时间】:2021-10-19 05:51:45
【问题描述】:

我正在尝试根据数据集中一列的四分位数范围标记值,但在合成两个步骤时遇到了问题。下面是一个玩具数据集:

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()

但是,我现在无法将标签(例如,“low”、“low_med”、“high_med”、“high”)分配给数据集 inqrating_home 值范围.期望的输出:

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
...     ...            ...

这篇文章很有帮助,但对范围进行了硬编码:How to categorize a range of values in Pandas DataFrame 因为我的数据集可能会随着更多数据的进入而改变,所以我每次运行代码时都需要计算范围。感谢您的帮助!

【问题讨论】:

    标签: python pandas quartile


    【解决方案1】:

    我想你想要:

    df['rating_home_quartile'] = pd.cut(df['rating_home'], bins=4, 
                                         labels=['low', 'low_med', 'high_med', 'high'])
    

    【讨论】:

      【解决方案2】:

      听起来您想将数据分成四分位数。 pd.qcut 可以轻松实现四分位数、五分位数、十分位数等。

      df['rating_home_quartile'] = pd.qcut(df['rating_home'], q=4, labels=['low', 'low_med', 'high_med', 'high'])
      
      • q 是分位数
      • labels是对应的分位数名称;确保它与q 的分位数匹配

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-21
        • 2021-03-24
        • 2014-01-01
        • 2021-01-07
        • 2013-07-24
        • 2021-06-03
        • 2019-10-31
        相关资源
        最近更新 更多