微信好友個性標籤詞雲--微信資料分析(四)
阿新 • • 發佈:2018-12-13
簡述
程式碼
構建詞雲的時候,採用的背景圖
生成的效果為:
可以發現,我的微信朋友們的雖然表面上看起來一個個都是逗比,但是個性標籤似乎都是慢慢的正能量哇~
- 下面使用的時候,我用的是我之前已經打包好的資料檔案
- 如果你也想要使用的話,你需要根據上面的我給出的那個連線,先下載下資料先
- 或者是根據下面程式碼直接呼叫那個函式就好了我自己寫的那個
import itchat
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import re
import jieba
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
def login_and_getData(columns=[]):
itchat.auto_login(hotReload=True)
# 第一個就是自己
friendList = itchat.get_friends(update=True)[1:]
if len(columns) == 0:
columns = friendList[0].keys()
df = pd.DataFrame( columns=columns)
val = [0] * len(friendList)
for c in columns:
for i in range(len(friendList)):
val[i] = friendList[i][c]
df[c] = val
return df
def read(filename):
try:
return pd.read_excel(filename)
except Exception:
return pd.read_csv( filename)
if __name__ == '__main__':
sns.set_palette('deep', desat=.6)
# df = login_and_getData()
# df.to_excel('wechat-1.xlsx')
df = read('wechat-1.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
siglist = df['Signature'].dropna()
# 有些是包括表情的標籤 需要去愛哦
ser = pd.Series(map(lambda x: re.sub('<span(.*?)/span>', '', x), siglist))
# 將所有的標籤都拼起來
text = ''.join(ser)
# 分詞
word_list = jieba.cut(text, cut_all=True)
# 將分出來的詞庫也拼起來
word_space_split = ' '.join(word_list)
# 讀取圖片
coloring = np.array(Image.open("wechat.jpg"))
# 用這個圖片作為邊界
# 設定font_path設定字型,同時為了顯示中文
my_wordcloud = WordCloud(background_color="white", max_words=2000,
mask=coloring, max_font_size=100, random_state=42, scale=2, font_path="C:/windows/Fonts/FZSTK.TTF").generate(word_space_split)
# 得到這個圖片的色彩分佈
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
# 關閉橫縱座標
plt.axis("off")
# 顯示圖片
plt.show()