(pandas)评论数据清洗

1.空值处理

# 直接删除评论列中的空值(不包含空字符串)
df = df.dropna(subset=['comment'])

2.数据去重

去重时最好把多列作为参照,不能只根据评论列,防止删除不同人写出的相同评论。

# 根据用户id与comment两列作为参照,如存在用户id与comment同时相同,那么只保留最开始出现的。
df.drop_duplicates(subset=['user_id', 'comment'], keep='first', inplace=True)
# 重置索引
df.reset_index(drop=True, inplace=True)

3.定向剔除无用评论

1.剔除纯数字评论,先将其转为空字符串,之后对空字符串统一处理。

# 用空字符串('')替换纯数字('123')
df['comment'] = df['comment'].str.replace('^[0-9]*$', '')

2.剔除单一重复字符的评论

# 用空字符串('')替换('111','aaa','....')等
df['comment'] = df['comment'].str.replace(r'^(.)\1*$', '')

3.将评论中的时间转为空字符

# 用空字符串('')替换('2020/11/20 20:00:00')等
df['comment'] = df['comment'].str.replace(r'\d+/\d+/\d+ \d+:\d+:\d+', '')

4.对开头连续重复的部分进行压缩
效果:‘aaabdc’—>‘adbc’
‘很好好好好’—‘很好’

# 将开头连续重复的部分替换为空''
prefix_series = df_comment.str.replace(r'(.)\1+$', '')
# 将结尾连续重复的部分替换为空''
suffix_series = df_comment.str.replace(r'^(.)\1+', '')
for index in range(len(df_comment)):
    # 对开头连续重复的只保留重复内容的一个字符(如'aaabdc'->'abdc')
    if prefix_series[index] != df_comment[index]:
        char = df_comment[index][-1]
        df_comment[index] = prefix_series[index] + char
    # 对结尾连续重复的只保留重复内容的一个字符(如'bdcaaa'->'bdca')
    elif suffix_series[index] != df_comment[index]:
        char = df_comment[index][0]
        df_comment[index] = char + suffix_series[index]

将空字符串转为’np.nan’,在使用dropna()来进行删除

# 将空字符串转为'np.nan',即NAN,用于下一步删除这些评论
df['comment'].replace(to_replace=r'^\s*$', value=np.nan, regex=True, inplace=True)
# 删除comment中的空值,并重置索引
df = df.dropna(subset=['comment'])
df.reset_index(drop=True, inplace=True)

哪怕对自己的一点小小的克制,也会使人变得强而有力在这里插入图片描述

  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值