前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python应用之猜不到的鲁迅先生

Python应用之猜不到的鲁迅先生

作者头像
楚客追梦
发布2022-11-11 20:07:51
5070
发布2022-11-11 20:07:51
举报
文章被收录于专栏:网页杂谈

制作词云图

任务目标 使用python完成一个小程序,分析鲁迅先生文章中 最常用的词语,并使用词云图展示出来。

按照功能将程序分为3个模块: 读取数据、分词处理、制作词云图

读取数据—文件操作

文件操作有3个步骤:打开文件、读取文件、关闭文件。 • 打开文件:

py

代码语言:javascript
复制
f = open('文件名', '打开模式', encoding='utf-8') 

• 读取文件:

py

代码语言:javascript
复制
text = f.read() 

• 关闭文件:

py

代码语言:javascript
复制
f.close() 

分词处理

读取到文章后,使用jieba库对文章进行分词处理。 • 导入jieba库

py

代码语言:javascript
复制
import jieba 

• 分词处理

py

代码语言:javascript
复制
分词结果 = jieba.lcut(字符串) 

制作词云图

词云图可以展示文章中的高频词。词语在文章中出现的次数越多,在图中就会显示得越大、越醒目。 制作词云图的3个步骤 创建词云对象、加载词云文本、保存词云图片

• 创建词云对象:

py

代码语言:javascript
复制
w = wordcloud.WordCloud() 

• 加载词云文本:

py

代码语言:javascript
复制
w.generate(s) 

• 保存词云图片:

py

代码语言:javascript
复制
w.to_file('词云.png')

制作词云图需要加载的文本应该是字符串类型的,并且词语之间需要由空格或标点符号隔开。

使用join()函数,来生成制作词云图用的文本。

py

代码语言:javascript
复制
s = ' '.join(列表) 

散文.txt ==> 鲁迅先生《朝花夕拾》

py

代码语言:javascript
复制
import wordcloud
import jieba

//读取文件,得到文章内容
f = open('散文.txt','r', encoding='utf-8')
text = f.read
f.close

words = jieba.lcut(text)                    //对文章进行分词
s = ' '.join(words)                         //将得到的词语用空格连接得到词云文本

mac = 'PingFang.ttc'
win = 'simhei.ttf'

sw = {'我们', '他们', '没有', '一个', '就是', '因为', '所以', '然而'}

//创建词云对象
w = wordcloud.WordCloud(
    width=300,
    height=300,
    background_color='white',
    collocations=False,
    stopwords=sw,
    font_path=win
)

w.generate(s)                 //加载词云文本
w.to_file('词云.png')          //保存词云图片
猜不到的鲁迅先生
猜不到的鲁迅先生

绘制柱状图

任务目标 分析鲁迅先生的文章中出现了哪些城市,并将它们的出现次数绘制成柱状图展示出来。 从分词结果中,将城市名称筛选出来,再统计出现次数,最后绘制成柱状图。

筛选数据

想要从大量词语中,将城市名称筛选出来。 可以先创建一个城市名称列表,判断词语是否在列表中。如果在列表中,就说明该词语是个城市名称,就将它筛选出来,添加到新列表中。

城市名称存储在文件 城市.txt 中,每个城市名称由空格隔开。

py

代码语言:javascript
复制
import jieba

//读取文件,得到文章,并进行分词
f1 = open('散文.txt','r', encoding='utf-8')
text1 = f1.read()
f1.close()
words = jieba.lcut(text1)

//读取文件,得到城市名称列表
f2 = open('城市.txt','r', encoding='utf-8')
text2 = f2.read()
f2.close()
names = text2.split()

cities = []
//从分词结果中筛选城市名称
for w in words:               
    if w in names:               //判断词语是否在城市名称列表中
        cities.append(w)         //如果是城市名称就添加到新列表中

列表cities中存储了分词结果中所有的城市名称。创建一个空字典,用来存储统计结果。

py

代码语言:javascript
复制
counts = {}
for w in cities:
    if w in counts:
        counts[w] += 1           //如果词语在字典中,就将对应的出现次数增加1
    else:
        counts[w] = 1            //如果词语不在字典中,将它添 加到字典中,并将对应的出现 次数设置为1

字典counts中存储着统计结果,其中字典的key是城市名 称,value是对应的出现次数。

柱状图

py

代码语言:javascript
复制
pyplot.bar(x轴数据, y轴数据) 

绘制图表有3个步骤: 准备数据、画图、展示图表 x、y轴数据为列表类型的。 x轴数据为字典 counts 的 key; y轴数据为字典 counts 的 value。

准备数据 字典名.keys() 得到字典的所有key 字典名.values() 得到字典的所有value 得到的并不是列表类型的数据 使用list()函数将数据转换为列表类型。

py

代码语言:javascript
复制
from matplotlib import pyplot
pyplot.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'simhei']

counts = {'广州':33, '北京':72, '上海':70, '绍兴':17, '杭州':7, '南京':15, '天津':15, '香港':7, '厦门':11}

c = list(counts.keys())
n = list(counts.values())
pyplot.bar(c, n, color='orange')

pyplot.title('城市出现次数')
pyplot.show()
猜不到的鲁迅先生
猜不到的鲁迅先生
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 制作词云图
    • 读取数据—文件操作
      • 分词处理
        • 制作词云图
        • 绘制柱状图
          • 筛选数据
            • 柱状图
            相关产品与服务
            腾讯云图数据可视化
            腾讯云图数据可视化(Tencent Cloud Visualization) 是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示大量数据,低门槛快速打造出专业大屏数据展示。精心预设多种行业模板,极致展示数据魅力。采用拖拽式自由布局,全图形化编辑,快速可视化制作。腾讯云图数据可视化支持多种数据来源配置,支持数据实时同步更新,同时基于 Web 页面渲染,可灵活投屏多种屏幕终端。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档