数据获取与可视化分析
题目要求
实验目的:
- 熟练掌握数据获取的方法、数据预处理的方法。
- 熟练掌握 Python 常用的绘图方法。
实验内容:
-
用自己的姓名或学号新建一个文件夹,在文件夹中新建一个文本文件“111.txt”。
-
从网上复制网页中的文章( 网址因原因不能打出来,随便找篇文章也行)”中的文本内容保存到“111.txt”中。
-
将“111.txt”文件中的内容的中文提取到“222.txt”文档中(使用 re方法)。
-
使用 jieba 对提取的中文文档(222.txt)进行分词处理,并统计出现频率最高的前 100 个。
-
使用 wordcloud 和 matplotlib.pyplot
方法对“222.txt”中的分词制作分词云图,并保存为“分词云图 1.png”。 -
使用“222.txt”中出现频率最高的前 10 个词语,制作条形图,X 轴对应10 个词语,y
轴对应每个词语的频率值,保存成“条形图 2.png”。
(附:有余力的人可以将实验内容的第(1)(2)步换成爬取网页内容的操作。)
参考代码及实验结果:
(自己补全实验过程中的代码及实验结果)
先学会提取文字(中文)到txt文件
提取TXT文本中指定内容的一种方法
python利用正则表达式提取文本中特定内容
python re模块
Python正则表达式中的re.S,re.M,re.I的作用
Python jieba库
博客园的
实例:
python jieba库的基本使用
基于python中jieba包的详细使用介绍
代码(By ZJQ)
#ZHANGDEDAIMA
import re
import jieba
import wordcloud
from matplotlib import pyplot as plt
import numpy as np
from PIL import Image
f=open('B:\\BaiduNetdiskDownload\\coding2021\\Python\\Python111.txt','r', encoding = 'utf-8')
count = f.read()
#提取中文
zh = u"([\u4e00-\u9fff]+)" # 中文的正则标准
re_words = re.compile(zh)
results = re_words.findall(count)
new_file = "B:\BaiduNetdiskDownload\coding2021\Python\222.txt"
f = open(new_file, 'w')
f.writelines(results)
f.close()
#分词处理
#f=open(new_file,'r')
#txt=f.read()
#words=jieba.lcut(txt)
#f.close()
#f = open(new_file, 'w')
#f.writelines(words)
#f.close()
#统计词频
#counts={}
#for word in words:
# if len(word) == 1:
# continue
# else:
# counts[word] = counts.get(word, 0)+1
#items = list(counts.items())
#items.sort(key=lambda x:x[1], reverse=True)
#for i in range(100):
# word, count = items[i]
# print("{0:<5}{1:>5}".format(word, count))
#分词
text = open('B:\BaiduNetdiskDownload\coding2021\Python\222.txt', 'r', encoding = 'gbk').read()
cut_text = jieba.cut(text)
fc1 = ' '.join(cut_text)
#词云图
bg1 = np.array(Image.open('B:\BaiduNetdiskDownload\coding2021\Python\pingguo.jpg'))
#词云图初始化
cy1 = wordcloud.WordCloud(
font_path = 'C:\Windows\Fonts\STXINGKA.TTF',
background_color = 'white',
width = 500,
height = 400,
max_font_size = 50,
min_font_size = 10,
mask = bg1
)
cy1.generate(fc1)
plt.figure('词云图例')
plt.imshow(cy1)
plt.axis('off')
plt.show()
注:代码作者不是本人,我写了她名字的缩写,如侵权则改为只能自己看。