pyhthon计算数据不出来

invalid value encountered in double_scalars python算法出错
kpil_Df = dataDF.drop_duplicates(subset=['销售时间','社保卡号'])

totalI = kpil_Df.shape[0]
print('总消费次数=',totalI)
kpil_Df = kpil_Df.sort_values(by='销售时间', ascending=True)
kpil_Df = kpil_Df.reset_index(drop=True)
startTime = kpil_Df.loc[0,'销售时间']
endTime = kpil_Df.loc[totalI-1,'销售时间']
daysI = (endTime-startTime).days
mounthI = daysI // 30
print('月份数=',mounthI)
kpil_I = totalI // mounthI
print('业务指标1:月均消费次数=', kpil_I)

#消费总金额
totalMoneyF = dataDF.loc[:,'实收金额'].sum()
mounthMoney = totalMoneyF // mounthI
print('业务指标2:月均消费金额=', mounthMoney)

#客单价
pct = totalMoneyF / totalI
print('业务指标3:客单价=', pct)

运行结果及报错内容

RuntimeWarning: invalid value encountered in double_scalars
mounthMoney = totalMoneyF // mounthI

我的解答思路和尝试过的方法
我想要达到的结果

谁帮忙改改

mounthI有可能为0 此时不能做分母,除之前先判断是不是0,不是再进行除的操作

你这段程序主要问题就是没有对各种特殊情况做专门的处理,有以下几点,你参考一下:
1、一般来说有消费记录,那么totalI肯定不为0,但是可能是1,所以要考虑totalI=1的情况,这种情况下mounthI =1,kpil_I =1,mounthMoney =totalMoneyF ,pct =totalMoneyF
2、totalI大于1的情况下可能消费记录只有30天以内的,也就是说daysI<30.那么mounthI =1,kpil_I =totalI,mounthMoney =totalMoneyF
3、mounthI = daysI // 30+1,比如59天,那么应该是两个月,不是1个月,同样29天也应该是1个月,而不是0个月,你现在报错可能就是这的问题

出现该报错,一般出现在 传入的相关值,不符合要求,不是被掉方法的可运算对象;

如:

在除法中,分母等于0的情况;

立方根表达式中,pow(x, 1.0/3.0), 若x为负,也会出现该报错;

解决方法:

运算时,对传入值进行判断或处理