问题描述
我试图总结一个电话后试图收取款项的情况。 挂断电话或没有答案= = 0(不付款) 不采取行动不算什么 拨打电话,挂断电话,然后付款将计为(付款)== 1
d={'ID':[1,1,2,3,3],\
'values':['call','hung up','no answer','non action','call','payment','hang up',] }
df=pd.DataFrame(data=d)
df
这里的总数是 2付款 1不付款
解决方法
如果您计算唯一的“ id”和“支付”频率,有帮助吗!
例如:计数唯一ID = 3,付款频率= 2,现在,(计数唯一ID-付款频率)=不付款。
Total_ID = len(df['ID'].value_counts())
Total_ID
在您的情况下,这将返回3
Payment = df.groupby('values').count()
Payment = Payment.loc['payment']['ID']
Payment
在您的情况下,这将返回2
Non_Payment = Total_ID - Payment
Non_Payment
这将返回1
,您可以使用交叉表更好地可视化数据:
d={'ID':[1,1,2,3,3],\
'values':['call','hung up','no answer','non action','call','payment','hang up',] }
df=pd.DataFrame(data=d)
df
df_ct = pd.crosstab(df['ID'],df['values'])
df_ct['payment'].sum() #Number of payments
df_ct['payment'].count()-df_ct['payment'].sum() #Number of non-payments
df_ct的输出:
values call hang up hung up no answer non action payment
ID
1 1 0 1 1 0 0
2 1 0 0 0 1 1
3 1 1 0 0 0 1
2 # Payments
1 # Non payment