微博評論詞雲圖
最近小豬在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( )
<class 'pandas.core.frame.DataFrame'>
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)
<ipython-input-45-3e1500d1d53c> in <module>
----> 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( )
這樣就做出來了我們需要的詞雲圖,可以看出祝安好的還是有很多人的