如何使用熊猫找到客户满意度?

时间:2019-09-14 17:15:28

标签: python python-3.x pandas dataframe

我有两列,例如agent_email和effortscore。在工作分数中,Y表示不满意,N表示满意。

列看起来像这样:

agent_email effortscore.
ab           1
ab           0
xy           1
xy           0

formula=(total 1's / total response)*100.

我希望输出像

ab 50% csat
xy 100% csat

2 个答案:

答案 0 :(得分:4)

我认为您需要汇总mean才能正常工作,因为只有10值和1的数量除以总数是mean公式:

df = pd.DataFrame({'agent_email':['ab@gmail.com','ab@gmail.com','xy@gmail.com'],
                   'effortscore':[1,0,1]})

df1 = df.groupby('agent_email')['effortscore'].mean().mul(100).reset_index()
print (df1)
    agent_email  effortscore
0  ab@gmail.com         50.0
1  xy@gmail.com        100.0

由于所讨论的数据不同,因此需要eq==进行比较并汇总mean

print (df)
  agent_email effortscore
0          ab           Y
1          ab           N
2          xy           Y
3          xy           N

df1 = df['effortscore'].eq('Y').groupby(df['agent_email']).mean().mul(100).reset_index()
print (df1)
  agent_email  effortscore
0          ab         50.0
1          xy         50.0

答案 1 :(得分:1)

使用pandas groupby和sum函数可以做到这一点。

df2 = df.groupby('email').agg({'sat': ['sum','count']})

# flatten the structure of dataframe
df2.columns = ['_'.join(tup).rstrip('_') for tup in df2.columns.values]

# email out from index
df3=df2.reset_index()

# create new df based on calculated values
df3['csat']=df3.sat_sum/df3.sat_count*100