微博评论词云图
最近小猪在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
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
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
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")
my_cloud.generate(text)
plt.rcParams['figure.figsize'] = (10, 6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()
- 可以看到这里的词云图是非常混乱的,看不出来什么东西,有很多用不到的词,我们需要对源数据清洗一下然后重新绘制
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)
my_cloud.fit_words(freq)
plt.rcParams['figure.figsize'] = (10, 6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()
- 这样就做出来了我们需要的词云图,可以看出祝安好的还是有很多人的