词云图分析微博评论

微博评论词云图

最近小猪在5月20号发布了一篇对周扬青的小作文,我正好也想做一个词云图的项目,
所以爬取了这条微博的评论,做个词云图来看看大家都在说些什么,
PS:有些信息只能脱敏

#导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import repeat_word as rw
import jieba
import jieba.analyse
from wordcloud import WordCloud,STOPWORDS #词云图,屏蔽词
from PIL import Image#读取图片

#显示中文
plt.rcParams['font.sans-serif']='simhei'
plt.rcParams['axes.unicode_minus']=False

数据处理

# 这是我之前已经爬取好的评论数据
df =  pd.read_excel(r"F:\Eddy\罗志祥博文评论.xlsx")
df.head()
发帖子人 博文发布时间 评论者 评论内容 评论时间 评论点赞
0 lzx 5月20日 09:12 1 四十岁啦还自称男孩6666(学到了 5月20日 13:20 1163934.00
1 lzx 5月20日 09:12 2 土狗,我初中就不写这种东西了 5月20日 09:20 953578.00
2 lzx 5月20日 09:12 3 热搜预备:罗志祥舔起来了 5月20日 09:12 370486.00
3 lzx 5月20日 09:12 4 不是繁体,是本人写的吗?难每天半夜给周扬青发消息的只是你的替身?是个大陆人? 5月20日 09:17 324679.00
4 lzx 5月20日 09:12 5 你的恋爱,我心疼;你的文字,还爱她。 5月20日 09:18 261725.00
df.info()

RangeIndex: 687 entries, 0 to 686
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   发帖子人    687 non-null    object 
 1   博文发布时间  687 non-null    object 
 2   评论者     686 non-null    object 
 3   评论内容    679 non-null    object 
 4   评论时间    686 non-null    object 
 5   评论点赞    349 non-null    float64
dtypes: float64(1), object(5)
memory usage: 32.3+ KB
#删除无评论项
df.dropna(inplace=True)
# 重置下索引
df.reset_index(drop=True,inplace=True)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

 in 
----> 1 df.reset_index(drop=true,inplace=True)


NameError: name 'true' is not defined
#看一下前10评论都说了什么
df[["评论者","评论内容","评论点赞"]][0:10]
评论者 评论内容 评论点赞
0 1 四十岁啦还自称男孩6666(学到了 1163934.00
1 2 土狗,我初中就不写这种东西了 953578.00
2 3 热搜预备:罗志祥舔起来了 370486.00
3 4 不是繁体,是本人写的吗?难每天半夜给周扬青发消息的只是你的替身?是个大陆人? 324679.00
4 5 你的恋爱,我心疼;你的文字,还爱她。 261725.00
5 6 怎么qq空间日志即视感啊男孩女孩 237951.00
6 7 ??? 211969.00
7 8 你不配这个女孩,臭八爪鱼 194336.00
8 9 真的想洗白就给大家还花呗 184394.00
9 10 ?????¡评论配图 158093.00

数据探索

# 提取评论
lzx = df.评论内容
lzx
0                           四十岁啦还自称男孩6666(学到了
1                              土狗,我初中就不写这种东西了
2                                热搜预备:罗志祥舔起来了
3      不是繁体,是本人写的吗?难每天半夜给周扬青发消息的只是你的替身?是个大陆人?
4                          你的恋爱,我心疼;你的文字,还爱她。
                        ...                  
632                         新型洗白方式,大家学起来。啥时候舔
637                                  是他自己写的吗。
653               “这段日子是我近年来最长的一段(没有和异性)独处时间”
656                            你垂死挣扎的样子,像极了卢某
671                       艺人不是普通人没有自己私生活事?何必?
Name: 评论内容, Length: 346, dtype: object
# 这里是之前写的一个删除评论前后重复的Python脚本
lzx_01 = rw.del_forward(rw.del_backward(lzx))
lzx_01[0:6]
['四十岁啦还自称男孩6666(学到了',
 '土狗,我初中就不写这种东西了',
 '热搜预备:罗志祥舔起来了',
 '不是繁体,是本人写的吗?难每天半夜给周扬青发消息的只是你的替身?是个大陆人?',
 '你的恋爱,我心疼;你的文字,还爱她。',
 '怎么qq空间日志即视感啊男孩女孩']
len(lzx_01)
346
# 去个重
lzx_03 = set(lzx_01)
len(lzx_03)
322
# 使用jieba切词,把所有评论放到一个列表中
text = ""
for i in lzx_03:
    text += " ".join(jieba.lcut(i))
# 简单看一下
text[0:220]
'你 平安 喜乐 就 好你 很 爱 她是不是 为了 周扬 青看 懂 才 换 的 简体哥 平安 就 好其实 分手 最好 , 没 觉得 他俩 般配放过 她 吧 , 哥 , 放过 人 女孩子 吧图片 评论 ¡ 评论 配图哥最好 的 猪猪 溜回 台湾 了 , 还 不忘发 文章 讨一波 打赏 , 不愧 是 时间 管理员 , 一寸光阴一寸金你 的 团队 真能作 , 请 你 放过 她卧槽 ? ?这 就 开始 洗白 了 吗 。 。 。 。 群 p 都 '

词云图绘制

#配置词云的基本参数,先简单绘制一下
mask = np.array(Image.open("地图.jpg"))
my_cloud = WordCloud(
    mask = mask,
    background_color='white',
    stopwords=STOPWORDS,  #这里是屏蔽词,等下我们可以制作一个自己的屏蔽词
    font_path="F:\Eddy\simsun.ttc")

# 把上面生成好的text文本放在词云实例中生成
my_cloud.generate(text)

# 各自画图格式
#显示词云
plt.rcParams['figure.figsize'] = (10, 6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()

词云图分析微博评论_第1张图片

  • 可以看到这里的词云图是非常混乱的,看不出来什么东西,有很多用不到的词,我们需要对源数据清洗一下然后重新绘制
#这里是一个txt问件,里面我已经提前加好了一些屏蔽词
sw = pd.read_csv(r"F:\Eddy\sw.txt",quoting=3,names=["屏蔽词"])
sw.head()
屏蔽词
0 评论
1 微博
2 配图
3 周扬
4 小猪
c = ""
for i in lzx_03:
    seg = jieba.lcut(i)
    for word in seg:
        if word in sw.values:
            continue
        else:
            c += " " + word
# 简单看一下,清洗过后的评论信息
c[0:200]
' 平安 喜乐 爱 青看 懂 换 简体 哥 平安 分手 他俩 般配 放过 哥 放过 女孩子 ¡ 哥 猪猪  溜回 台湾 不忘发 文章 讨一波 打赏 不愧 时间 管理员 一寸光阴一寸金 团队 真能作 请 放过 卧槽 洗白 群 p 原谅 错 错 错过 错过 安好 挑 520 发 人间 迷惑 回归 网络 异常 爱情 默默 守护 女朋友 一年 哥哥 好好 说 我哥 女孩 故事 不忍心 完 哥 干嘛 ¡ 好'
#制作词频,用来绘制词云图
freq = jieba.analyse.extract_tags(c,topK=30,withWeight=True)
print(freq[:30])
freq = {i[0]: i[1] for i in freq}
[('真的', 0.1367668533273763), ('安好', 0.11470157989691877), ('520', 0.11162247901867413), ('好好', 0.09713376472918767), ('女孩', 0.06969680003370682), ('爱过', 0.06597395530849673), ('干嘛', 0.060498606227647064), ('希望', 0.05832311792918768), ('加油', 0.0575616173279085), ('幸福', 0.05721095744537815), ('复合', 0.05627792496164333), ('洗白', 0.055811239509337064), ('文章', 0.05565907500285715), ('放过', 0.0548981662838562), ('男孩', 0.05404879653692811), ('粉丝', 0.052188852511540616), ('故事', 0.05143171902579831), ('定时', 0.04881395992235294), ('简体字', 0.04781350275742297), ('感情', 0.04762335690644258), ('分手', 0.04507342145529411), ('吃瓜', 0.04464899160746965), ('女友', 0.043443313734080294), ('珍惜', 0.04062642680070028), ('非主流', 0.038972704945658264), ('卧槽', 0.03893747241456583), ('真心', 0.038794074096451914), ('时间', 0.03809093961213819), ('原谅', 0.03737756684271709), ('向前', 0.03664900142089636)]
#配置词云的基本参数,绘制词频词云图
mask = np.array(Image.open("地图.jpg"))
my_cloud = WordCloud(
    mask=mask,
    background_color='white',
    stopwords=STOPWORDS,  #这里是屏蔽词,等下我们可以制作一个自己的屏蔽词
    font_path="F:\Eddy\simsun.ttc",
    width=1000,
    height=200)

# 把上面生成好的text文本放在词云实例中生成
my_cloud.fit_words(freq)

# 各自画图格式
#显示词云
plt.rcParams['figure.figsize'] = (10, 6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()

词云图分析微博评论_第2张图片

  • 这样就做出来了我们需要的词云图,可以看出祝安好的还是有很多人的

你可能感兴趣的:(数据分析,python,数据可视化)