【问题标题】:Grouping numerical values in categories将数值分组到类别中
【发布时间】:2020-01-12 07:50:00
【问题描述】:

我有学生分数内的数字数据,我想将它们分为 3 类 A、B 和 C。

df = pd.DataFrame([('Adel',  3.5),
                   ('Betty',  2.75),
                   ('Djamel',  2.10),
                   ('Ramzi',  1.75),
                   ('Alexa', 3.15)],
                  columns=('Name', 'GPA'))

我尝试了函数pd.cut(),但它没有导致想要的结果。

【问题讨论】:

  • 你遇到了什么错误?

标签: python dataframe group-by split data-science


【解决方案1】:

这是一种使用pd.cut的方法:

df = df.sort_values('GPA')

df['bins'] = pd.cut(df['GPA'], bins=3, labels = ['A','B','C'])

     Name   GPA bins
3   Ramzi  1.75    A
2  Djamel  2.10    A
1   Betty  2.75    B
4   Alexa  3.15    C
0    Adel  3.50    C

【讨论】:

    【解决方案2】:

    在最近的一项研究中,实施了 PSO 以将学生分类到未知数量的组中。与 GA 相比,PSO 显示出改进的能力。我认为你所需要的只是具体的研究。

    论文是:使用粒子群优化形成学习者的自动组以应用差异化教学

    你可以在这里找到论文:https://doi.org/10.1002/cae.22191

    也许研究人员可以引导您通过研究之门:https://www.researchgate.net/publication/338078753

    您只需要从自动组数中删除该技术

    【讨论】:

      【解决方案3】:

      我找到了这个解决方案:

      import pandas as pd, numpy as np
      
      df = pd.DataFrame({'GPA': [99, 53, 71, 84, 84],
                         'Name': ['Betty', 'Djamel', 'Ramzi', 'Alexa', 'Adel']})
      
      bins = [0, 50, 60, 70, 80, 100]
      names = ['F', 'D', 'C', 'B', "A"]
      
      d = dict(enumerate(names, 1))
      
      df['Rank'] = np.vectorize(d.get)(np.digitize(df['GPA'], bins))
      
      
      

      感谢此链接here

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2022-09-30
        • 2018-06-23
        • 2022-01-18
        • 1970-01-01
        • 2017-03-12
        • 1970-01-01
        • 2014-10-14
        • 1970-01-01
        相关资源
        最近更新 更多