(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)

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

猜你喜欢

转载自blog.csdn.net/qq_43965708/article/details/110884444