pandas在web开发中的使用场景:删除文章的重复评论、统计某个用户的评论数量

id,news_id,user_name,content,create_at
1,101,zhangsan,垃圾,2017-12-07 15:44:44
2,102,lisi,很好,2017-12-07 15:44:44
3,102,zhangsan,好文章,2017-12-07 15:44:44
4,103,wangwu,真不错,2017-12-07 15:44:44
5,104,zhangsan,垃圾,2017-12-07 15:44:44
6,105,lisi,垃圾,2017-12-07 15:44:44
7,101,zhangsan,垃圾,2017-12-07 15:44:44
8,109,lily,不错哦,2017-12-07 15:44:44
9,101,zhangsan,垃圾,2017-12-07 15:44:44
10,102,zhaoliu,什么玩意儿,2017-12-07 15:44:44

我们有一个csv文件,内容如上,可以理解为网站用户评论表。
肉眼就可以看出,有某个用户针对某个新闻评论了相同的内容。

找出重复数据

# coding: utf-8
import pandas as pd

reviews = pd.read_csv("./csv/reviews.csv", dtype={"id": pd.np.str_}, index_col="id")
print(type(reviews)) #<class 'pandas.core.frame.DataFrame'>

# 找重复
# "news_id","user_name","content" 这3个字段数据重复
ret = reviews.duplicated(subset=["news_id","user_name","content"])
print(ret)

打印结果如下:

id
1     False
2     False
3     False
4     False
5     False
6     False
7      True
8     False
9      True
10    False
dtype: bool

id为7和9的为True,意思是他俩是重复的,实际我们知道id为1的数据和他俩也是相同的。

# keep=False 只要是重复的都拿出来
ret = reviews.duplicated(subset=["news_id","user_name","content"], keep=False)

print(reviews[ret]) # 打印 这些内容
"""
    news_id user_name content            create_at
id                                                
1       101  zhangsan      垃圾  2017-12-07 15:44:44
7       101  zhangsan      垃圾  2017-12-07 15:44:44
9       101  zhangsan      垃圾  2017-12-07 15:44:44
"""

找出重复内容的id:

# coding: utf-8
import pandas as pd

reviews = pd.read_csv("./csv/reviews.csv")

# 取出重复的内容
duplicate_reviews = reviews[reviews.duplicated(subset=["news_id","user_name","content"], keep=False)]
# 取出重复内容的id
ids = duplicate_reviews['id']

# 用逗号拼接id
print(",".join(str(id) for id in ids)) # 1,7,9

1,7,9就是我们需要的重复记录的id,有了这个id字符串就可以组装sql去删除数据表中的重复记录了。

统计某个用户的评论数量

# coding: utf-8
import pandas as pd

reviews = pd.read_csv("./csv/reviews.csv")

# 按用户分组 统计数量
result  = reviews.groupby("user_name").size()
print(result)
"""
user_name
lily        1
lisi        2
wangwu      1
zhangsan    5
zhaoliu     1
dtype: int64
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值