0

我定义了以下公式来计算净推荐值(“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

我坚持的是从这个单月的观点进入一个3 个月的滚动观点。这意味着,在每月 3 个月的滚动窗口中应用 NPS 公式,并从过去 3 个月的所有“推荐者”的百分比份额减去过去 3 个月的所有“批评者”的百分比份额得出 NPS。

请注意:这里我不是在谈论移动平均线(平均 3 个月的分数不一样,结果略有不同)

我在“.rolling()”、“.apply()”、最新的 Pandas 版本(滚动计算方面有一些改进?)以及滚动 NPS 计算的另一个自定义定义之间有点迷失了?

您认为解决此问题的最佳方法是什么?

这是输入数据的样子。表格很大,但这些是感兴趣的变量。从 2020 年开始,有多个国家、地区和月份。NPS 评级是 0-10 的整数。

| 国家 | 细分 | 月 | 核动力源 |

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

4

0 回答 0