文件和数据格式化,wordcloud库使用,文本词频统计
目录
文件和数据格式化
文件的使用
1、概述
- 文件的类型
- 文件的打开和关闭
- 文件内容的读取
- 数据的文件写入
2、文件的类型
2.1、文件的理解
文件是数据的抽象和集合
- 文件是存储在辅助存储器上的数据序列
- 文件是数据存储的一种形式
- 文件展现形态:文本文件和二进制文件
文本文件vs二进制文件
- 文本文件和二进制文件只是文件的展示方式
- 本质上,所有文件都是二进制形式存储
- 形式上,所有文件采用两种方式展示
2.2、文本文件
文件是数据的抽象和集合
- 由单一特定编码组成的文件,如utf-8编码
- 由于存在编码,也被看成是存储的长字符串
- 适用于例如:.txt文件、.py文件等
2.3、二进制文件
文件是数据的抽象和集合
- 直接由比特0和1组成,没有统一字符编码
- 一般存在二进制0和1的组织结构,即文件格式
- 适用于例如:png文件、.avi文件
文件打开和关闭
f = open(r'D:\PycharmProjects\untitled\day06\demo.py','r') # 文件打开
data = f.read() # 只读取
print(data)
f.close()
覆盖写入,清空文件写入
f = open(r'D:\PycharmProjects\untitled\day06\demo.py','w') # 文件打开
f.write('''x = 1 # 写入
y = 2
''')
f.close()
f = open(r'D:\PycharmProjects\untitled\day06\demo.py','r') # 只读取
data = f.read()
print(data)
f.close()
| 文件的打开模式 | 描述 |
|---|---|
| 'r' | 只读模式,默认值,如果文件不存在,返回FileNotFoundError |
| 'w' | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
| 'x' | 创建写模式,文件不存在则创建,存在则返回FileExistsError |
| 'a' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
| 'b' | 二进制文件模式 |
| 't' | 文本文件模式,默认值 |
| '+' | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
wordcloud库的使用
1、wordclound库基本介绍
wordcloud库概述
wordcloud是优秀云展示第三方库
- 词云以词语为基本单位,更加直观和艺术的展示文本
2、wordcloud库使用说明
2.1、wordcloud库基本使用
wordcloud库把词云当作一个WordCloud对象
- wordcloud.WordCloud()代表一个文本对应的词云
- 卡哇伊根据文本中词语出现的频率等参数绘制词云
- 绘制词云的形状、尺寸和颜色都可以设定
2.2、wordcloud库常规方法
w=wordcloud.WordCloud()
- 以WordCloud()对象为基础
- 配置参数、加载文本、输出文件
| 方法 | 描述 |
|---|---|
| w.generate(txt) | 向WordCloud对象w中加载文本txt,w.generate("Python and WordCloud") |
| w.to_file(filename) | 将词云输出为图像文件,.png或.jpg?x-oss-process=style/watermark格式,w.to_file("outfile.png") |
- 步骤1:配置对象参数
- 步骤2:加载词云文本
- 步骤3:输出词云文件
import wordcloud
from imageio import imread
mask = imread(r"D:\PycharmProjects\untitled\day06\1.png")
f = open(r'D:\PycharmProjects\untitled\day06\threekingdoms.txt','r',encoding='utf8')
data = f.read()
w = wordcloud.WordCloud(font_path=r'C:\Windows\Fonts\simsun',mask=mask,
background_color="white")
w.generate(data)
w.to_file('outfile1.png')
文本词频统计
# 英文文本统计
f = open(r'D:\PycharmProjects\untitled\day06\hamlet.txt','r',encoding="utf8")
data = f.read()
data_split = data.split(' ')
# print(data_split)
dit = {}
for word in data_split:
if word in dit:
dit[word] += 1
else:
dit[word] = 1
def foc(i):
return i[1]
lt = list(dit.items())
lt.sort(key=foc)
lt.reverse()
for i in lt[:10]:
print(f'{i[0]:^7}{i[1]:^5}')
the 776
and 592
of 527
to 500
my 369
a 361
in 320
you 305
I 291
his 235
# 中文文本统计
import jieba
f = open(r'D:\PycharmProjects\untitled\day06\threekingdoms.txt','r',encoding='utf8')
data = f.read()
# print(data)
data_jieba = jieba.lcut(data)
# print(data_jieba)
dict = {}
for word in data_jieba:
if len(word) == 1:
continue
if '曰' in word:
word = word.replace('曰','')
if word in dict:
dict[word] += 1
else:
dict[word] = 1
# print(dict)
def fac(i):
return i[1]
data_list = list(dict.items())
data_list.sort(key=fac)
data_list.reverse()
print(data_list)
[('孔明', 1226), ('玄德', 975), ('曹操', 953), ('将军', 772), ('却说', 656), ('关公', 510), ('丞相', 491).......]

浙公网安备 33010602011771号