Npsֵ:使用Pandas计算NPS

关于Npsֵ的问题,在python nps中经常遇到, 我对 Python 非常非常新,并且正在研究如何计算 NPS 分数。

我对 Python 非常非常新,并且正在研究如何计算 NPS 分数。

计算是:

(分数计数 9-10 / 分数总数 0-10)-(分数计数 0-6 / 分数总数 0-10)。

我使用的数据框:

enter image description here

NPS 需要分别为每个理事会计算。这是我在这里的第一篇文章,希望它是有意义的。如果有人能指出我正确的方向,将不胜感激。

干杯 Ben.

1

假设数据在data.csv中:

import pandas as pd
from collections import defaultdict
df = pd.read_csv('data.csv')
high_nps = defaultdict(lambda: 0)
low_nps = defaultdict(lambda: 0)
high_nps.update(dict(df[df['NPS'] >= 9].groupby('CouncilName').count().reset_index()[['CouncilName', 'NPS']].values))
low_nps.update(dict(df[df['NPS'] <= 6].groupby('CouncilName').count().reset_index()[['CouncilName', 'NPS']].values))
total_nps = dict(df.groupby('CouncilName').count().reset_index()[['CouncilName', 'NPS']].values)
nps_score = {council: (high_nps[council] - low_nps[council]) / float(total_nps[council])  for council in total_nps}
print(nps_score)

打印:

{'Council A': 0.0, 'Council B': -1.0, 'Council C': -1.0}
0
def npsForField(df,column,fid):
    nps={}
    # first make sure our column has numeric values:
    subject = pd.DataFrame(columns=[column],data=pd.to_numeric(df[df['field_id']==fid][column]))
    # calculate all NPS components:
    nps['total']      = subject[column].count()
    nps['detractors'] = subject[subject[column]<7][column].count()
    nps['passives']   = subject[(subject[column]>6) & (subject[column]<9)][column].count()
    nps['promoters']  = subject[subject>8][column].count()
    nps['nps']        = (nps['promoters'] - nps['detractors']) / nps['total']
    return nps

然后假设你想计算一个名为answerdf列的 NPS,但只在df[df['field_id']==fid]的地方。

npsForField(df, column='answer', fid='abc123')

示例结果:

{'total': 979,
 'detractors': 313,
 'passives': 291,
 'promoters': 375,
 'nps': 0.06332992849846783}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(555)
Python总结心得:总结 Python中的数组字典
上一篇
Python两个for循环并列:如何在列表理解python中构建两个for循环
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(61条)