# Python詞云圖怎么生成
## 一、什么是詞云圖
詞云圖(Word Cloud)是一種數據可視化形式,通過不同大小、顏色和排列方式的文字來直觀展示文本數據中的高頻詞匯。詞頻越高的詞匯在圖中顯示越大,反之則越小。這種圖表廣泛應用于:
- 文本分析
- 社交媒體輿情監控
- 用戶評論情感分析
- 文檔關鍵詞提取
## 二、Python生成詞云圖的必備工具
### 1. 核心庫介紹
```python
# 主要依賴庫
pip install wordcloud matplotlib jieba pillow numpy
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text = """Python is an interpreted, high-level and general-purpose programming language.
Python's design philosophy emphasizes code readability with its notable use of significant whitespace."""
# 生成詞云對象
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
# 顯示詞云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 隱藏坐標軸
plt.show()
參數 | 說明 | 示例值 |
---|---|---|
width | 圖像寬度(像素) | 800 |
height | 圖像高度 | 600 |
background_color | 背景色 | ‘white’, ‘black’ |
max_words | 最大顯示詞數 | 200 |
stopwords | 停用詞集合 | set([‘the’, ‘and’]) |
colormap | 顏色映射 | ‘viridis’, ‘plasma’ |
font_path | 字體文件路徑 | ‘msyh.ttc’(微軟雅黑) |
import jieba
text = "自然語言處理是人工智能的重要方向之一。中文分詞是處理中文文本的基礎步驟。"
# 中文分詞處理
seg_text = " ".join(jieba.cut(text))
from wordcloud import WordCloud
import jieba
import matplotlib.pyplot as plt
# 準備中文文本
text = """數據分析是指用適當的統計分析方法對收集來的大量數據進行分析...
Python在數據分析領域有pandas、numpy等優秀庫支持"""
# 中文分詞
text_cut = " ".join(jieba.cut(text))
# 配置中文字體(重要?。?font_path = 'msyh.ttc' # 微軟雅黑字體
# 生成詞云
wc = WordCloud(
font_path=font_path,
width=1000,
height=700,
background_color='white',
max_words=100
).generate(text_cut)
# 顯示詞云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
from PIL import Image
import numpy as np
# 加載形狀蒙版
mask = np.array(Image.open('cloud_shape.png'))
wc = WordCloud(
mask=mask,
contour_width=3,
contour_color='steelblue'
).generate(text)
from wordcloud import ImageColorGenerator
# 基于圖片的顏色方案
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
from collections import Counter
# 手動統計詞頻
words = jieba.cut(text)
word_counts = Counter(words)
# 過濾低頻詞
filtered_counts = {k:v for k,v in word_counts.items() if v > 2}
wc.generate_from_frequencies(filtered_counts)
import pandas as pd
# 讀取電商評論數據
df = pd.read_csv('reviews.csv')
all_text = " ".join(df['comment'])
# 生成詞云(略,同上)
# 使用jieba.analyse提取關鍵詞
import jieba.analyse
tags = jieba.analyse.extract_tags(text, topK=100, withWeight=True)
word_freq = {tag[0]: tag[1] for tag in tags}
wc.generate_from_frequencies(word_freq)
中文顯示為方框
font_path
參數詞云形狀不規則
mask
數組的閾值性能優化建議
max_words
數量scale
參數縮小畫布比例"""
電商評論詞云分析系統
1. 讀取評論數據
2. 清洗與分詞
3. 生成定制化詞云
"""
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
# 1. 數據加載
df = pd.read_csv('product_reviews.csv')
# 2. 文本預處理
def clean_text(text):
# 去除特殊字符、停用詞等
return text
all_text = " ".join(df['comment'].apply(clean_text))
words = [word for word in jieba.cut(all_text) if len(word) > 1]
word_counts = Counter(words)
# 3. 生成詞云
wc = WordCloud(
font_path='msyh.ttc',
width=1200,
height=800,
background_color='white',
colormap='viridis',
max_words=150
).generate_from_frequencies(word_counts)
# 4. 保存結果
plt.figure(figsize=(15, 10))
plt.imshow(wc)
plt.axis('off')
plt.savefig('wordcloud.png', dpi=300, bbox_inches='tight')
官方文檔:
推薦書籍:
進階方向:
通過本文介紹的方法,您可以快速掌握使用Python生成各種風格的詞云圖,并根據實際需求進行深度定制。詞云不僅是文本分析的工具,更是數據故事講述的有效手段。 “`
注:實際使用時請注意: 1. 需要根據系統環境配置中文字體 2. 示例中的數據文件路徑需要替換為實際路徑 3. 中文處理建議添加自定義詞典和停用詞表 4. 圖片保存格式支持PNG/JPG/SVG等多種格式
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。