文件和数据格式化,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).......]

posted @ 2019-07-19 21:03  lvxiwei  阅读(828)  评论(0)    收藏  举报