我对 Python 非常非常新,并且正在研究如何计算 NPS 分数。
计算是:
(分数计数 9-10 / 分数总数 0-10)-(分数计数 0-6 / 分数总数 0-10)。
我使用的数据框:
NPS 需要分别为每个理事会计算。这是我在这里的第一篇文章,希望它是有意义的。如果有人能指出我正确的方向,将不胜感激。
干杯 Ben.
假设数据在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}
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
然后假设你想计算一个名为answer
的df
列的 NPS,但只在df[df['field_id']==fid]
的地方。
npsForField(df, column='answer', fid='abc123')
示例结果:
{'total': 979,
'detractors': 313,
'passives': 291,
'promoters': 375,
'nps': 0.06332992849846783}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(61条)