python - 词云

数据处理

import numpy as np
import pandas as pd

df = pd.read_csv("../../pandas/weibo_2020.csv",encoding='utf-8')
df.sort_values(by = 'searchCount',ascending=False)
df.head()

在这里插入图片描述

jieba分词

df["year"] = pd.to_datetime(df["date"]).dt.year
df["month"] = pd.to_datetime(df["date"]).dt.month
df["day"] = pd.to_datetime(df["date"]).dt.day
df.head()
search_df = pd.DataFrame()
for i in list(range(1,13)):
    search_df = search_df.append(df[df['month']==i].sort_values(by = 'searchCount',ascending = False).head(50))
    pass
import jieba
cut_list = []
for i in range(search_df.shape[0]):
    cut_list.extend([w for w in jieba.cut(search_df['keyword'].tolist()[i]) if len(w)>1 and w!=" " ])
np.array(cut_list)

在这里插入图片描述

方法1:stylecloud

#方法1 使用stylecloud,使用官网定义好的形状
import stylecloud
stylecloud.gen_stylecloud(
    text=' '.join(cut_list),
    size=1200,
    font_path = r'C:/Windows/Fonts/msyh.ttc', #字体
    output_name='词云.png',
    icon_name='fas fa-angry', #词云形状,命名方式:fas fa-xxx),默认是:'fas fa-flag'
    # 具体url:https://fontawesome.com/v5.15/icons?d=gallery&p=2
    palette='colorbrewer.sequential.Blues_4',
    background_color=black
)

词云.png

方法1:WordCloud

# 方法2:使用WordCloud 可以自定义图片形状
import jieba
from wordcloud import WordCloud
import pandas as pd
import matplotlib.pyplot as plt


if __name__=="__main__":
    url="https://s.weibo.com/top/summary?cate=realtimehot"
#     top_search = getdata(getpage(url))
    all_words =  cut_list #cut_words(top_search)

    #定义停用词
    stop = ['的','你','了','将','为','例',' ','多','再','有','是','等','天','次']
    words_cut = []
    for word in all_words:
        if word not in stop:
            words_cut.append(word)
    word_count = pd.Series(words_cut).value_counts()
    back_ground = imread(r"C:\Users\fqp18\Pictures\123.jpg")
    wc = WordCloud(
                   font_path="C:\\Windows\\Fonts\\simhei.ttf", #设置字体
                   background_color="white",  #设置词云背景颜色
                   max_words=1000,  #词云允许最大词汇数
                   mask=back_ground,  #词云形状
                   max_font_size=200,   #最大字体大小
                   random_state=50  #配色方案的种数
                  )
    print(word_count)
    wc1 = wc.fit_words(word_count)  #生成词云
    plt.figure()
    plt.imshow(wc1)
    plt.axis("off")
    plt.show()
    wc.to_file("ciyun.png")

ciyun.png

### 如何使用Python生成中文 为了生成高质量的中文,通常需要两个主要库的支持:`wordcloud` 和 `jieba`。前者负责绘制图,后者则专注于中文分处理。 #### 安装必要的库 在开始之前,确保已经安装了所需的第三方库: ```bash pip install wordcloud jieba matplotlib ``` #### 导入库和初始化配置 加载必需的模块,并设定一些基本参数以优化后续操作效率[^2]。 ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt ``` #### 准备文本数据 获取待分析的文字材料。这里假设有一个字符串变量 `text` 存储着一段或多段文字内容。对于中文而言,在构建频表前应当先对其进行精确分割[^1]。 ```python # 假设 text 是预先定义好的包含大量文本信息的字符串 words = ' '.join(jieba.cut(text)) ``` #### 创建并调整WordCloud对象 根据个人喜好自定义外观特性,比如背景颜色、字体路径(特别是当涉及非英文字符时)、最大单数等[^3]。 ```python wc = WordCloud( background_color="white", # 设置背景为白色,默认为黑色 max_words=2000, # 显示最多的汇数量 font_path='/path/to/simhei.ttf', # 中文支持需指定中文字体文件路径 width=800, height=400 ).generate(words) ``` > **注意**: 需要提供一个有效的中文字体文件路径给 `font_path` 参数;否则可能会遇到乱码问题。 #### 展示或保存生成的结果 最后一步就是渲染图像并将之呈现出来或是导出成静态文件形式。 ```python plt.imshow(wc, interpolation='bilinear') plt.axis("off") # 关闭坐标轴显示 plt.show() # 或者直接保存到本地磁盘上 wc.to_file('chinese_word_cloud.png') ``` 通过上述流程即可完成一张美观大方又富含意义的中文图表创作过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值