一种分析代金券使用分布情况的方法python实现版(下)

本文介绍了处理数据过程中需要注意的事项,包括去除换行符避免SQL注入风险,使用Python字典统计用户领取代金券数量并进行降序排列的方法。通过实际案例展示了如何高效地整理与分析数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章中已经找到了用户ID和领取代金券的数量,并按降序排序,下面要做的就简单了,有了前面的经验,我们照抄三份,一份去分析交易的情况,一份去查询用户黑名单库,最后一份去查看用户注册的时间和注册时使用的IP地址。

上篇已经把所有的实现展示给大家了,这一次主要是讲解其中的注意事项:

第一:对于按行读取的所有信息,会包含最后的换行符,如果不是直接拼接字符串也没有关系,但是当拼接SQL语句时会出现类似select user_id from tb_user_gift where id = '123
';的问题,所以在读取信息后,要去掉尾部的换行符,替换的方法line = line.strip('\n')

第二:dict(字典)中的元素按照一定的规则排序,我们把处理的结果组织成key,value的形式,对于同一个key,如果遇到新的value,则把它累加,这样对于处理一个用户领取了多张代金券是有意义的,利用dict的items方法,把dict的内容组织成一个一个的元组,如

>>> map={}
>>> map["n1"] = 1
>>> map["n2"] = 3
>>>
>>> print map
{'n1': 1, 'n2': 3}
>>> map.items()
[('n1', 1), ('n2', 3)]
>>>

由于我们需要根据个数的降序显示,利用array中的排序方法来实现:arr = [ v for v in sorted(map.items(), cmp=reverse_numeric)],由于默认的排序方法不满足我们的要求,故还需要实现一个排序的方法,

def reverse_numeric(x, y):
return y[1]- x[1]

此方法只适用于参数为整数的情况,因为比较的函数只能返回整数,对于非整数的情况,使用下面的方法:

def reverse_numeric(x, y):
if (y[1]- x[1]) > 0:
return 1
elif (y[1]- x[1]) == 0:
return 0

return -1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值