Группировка числовых значений по категориям - PullRequest
0 голосов
/ 12 января 2020

У меня есть цифры c в оценках ученика, и я хотел бы сгруппировать их по 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(), но она не привела к желаемому результату.

Ответы [ 3 ]

1 голос
/ 13 января 2020

В недавнем исследовании был реализован PSO для классификации студентов по неизвестному количеству групп. PSO показал улучшенные возможности по сравнению с GA. Я думаю, что все, что вам нужно, - это конкретное c исследование.

Документ: Формирование автоматов c групп учащихся с использованием оптимизации роя частиц для приложений дифференцированного обучения

Вы можете найти бумага здесь: https://doi.org/10.1002/cae.22191

Возможно, исследователи могли бы помочь вам через исследовательский шлюз: https://www.researchgate.net/publication/338078753

Вам просто нужно удалить технику c из автоматов c количество групп

1 голос
/ 12 января 2020

Вот способ использования 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
0 голосов
/ 12 января 2020

Я нашел это решение:

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


благодаря этой ссылке здесь .

...