Рассчитать ежемесячный прокатный net балл промоутера - PullRequest
0 голосов
/ 03 августа 2020

Я определил следующую формулу для расчета Net балла промоутера («NPS»):

def nps_calc(data):
    promoter_share = data[data.nps > 8].count()/len(data)
    detractor_share = data[data.nps < 7].count()/len(data)
    nps_score = (round((promoter_share - detractor_share)*100,0))
    return nps_score

Я применил приведенную выше формулу в заявлении groupby для расчета баллов NPS для отдельных месяцев на основе столбец "nps". Столбец «месяц» представляет собой просто целое число (1–12).

df.groupby(['Country','Segment','Month']).apply(nps_calc).nps

То, на чем я застрял, - это go с точки зрения одного месяца на скользящую перспективу за 3 месяца . Это означает, что нужно применять формулу NPS в течение трехмесячного скользящего окна в месяц и получать NPS из процентной доли всех «промоутеров» за последние 3 месяца минус процентная доля всех «недоброжелателей» за последние 3 месяца.

Обратите внимание: я не говорю здесь о скользящих средних (усреднение результатов за 3 месяца - не одно и то же, и результаты немного различаются) .

Я немного потерялся между такие операторы, как «.rolling ()», «.apply ()», последний выпуск Pandas (с некоторыми улучшениями в скользящих вычислениях?) и, возможно, другое настраиваемое определение для скользящего расчета NPS?

Как вы думаете, как лучше всего с этим справиться?

Вот как выглядят входные данные. Таблица довольно большая, но это интересующие переменные. С 2020 года есть несколько стран, сегментов и месяцев. Рейтинги NPS представляют собой целые числа от 0 до 10.

| Страна | Сегмент | Месяц | nps |

| 1 | 1 | 1 | 7 |

| 1 | 1 | 1 | 4 |

| 1 | 1 | 1 | 9 |

| 1 | 2 | 1 | 10 |

| 1 | 2 | 2 | 7 |

| 1 | 2 | 2 | 5 |

| 1 | 1 | 3 | 1 |

| 1 | 2 | 3 | 9 |

| 1 | 2 | 1 | 6 |

| 2 | 2 | 2 | 8 |

| 2 | 1 | 3 | 0 |

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...