灌篮高手词频统计与词云图

微信公众号:Garry的学习生涯
# 导入jieba库,用于中文分词

import jieba

# 导入wordcloud库,用于生成词云图
import wordcloud

# 从imageio库中导入imread函数,用于读取图片
from imageio import imread

# 读取一张图片文件"灌篮高手.png",并将其赋值给变量mk
mk = imread("灌篮高手.png")

# 打开一个包含停用词的文件,文件路径为"C:/Users/Garry/Desktop/词频率/词云图用到的txt文件/chineseStopWords.txt",并读取其中的所有行
with open("C:/Users/Garry/Desktop/词频率/词云图用到的txt文件/chineseStopWords.txt", 'r', encoding='utf-8') as f:
# 将读取到的每一行的内容(即停用词)存储到一个列表中,并去除每个词的前后空格
content = f.readlines()
content_list = [line.strip() for line in content]
print(content_list)

# 打开一个电子书文件,文件路径为"C:/Users/Garry/Desktop/词频率/电子书/灌篮高手.txt",并读取其中的所有内容
txt = open("C:/Users/Garry/Desktop/词频率/电子书/灌篮高手.txt", "r", encoding='utf-8').read()

# 使用jieba库的lcut函数对读取到的文本进行分词
words = jieba.lcut(txt)

# 创建一个空字典,用于存储每个词及其出现的次数
counts = {}

# 遍历分词后的结果,对于每一个词,如果它的长度为1(即它是一个单字),或者它在停用词列表中,就跳过;否则,将它添加到字典中,并更新其出现的次数
for word in words:
if len(word) == 1:
continue
if word in content_list:
continue
else:
rword = word
counts[rword] = counts.get(rword, 0) + 1

# 创建一个词云对象,设置其宽度、高度、背景颜色、最大词数、字体路径和遮罩图片
w=wordcloud.WordCloud(width=1000, height=700, background_color="white", max_words=1000, font_path="AliHYAiHei.ttf", mask=mk)

# 使用字典中的词频信息生成词云图
w.generate_from_frequencies(counts)

# 将生成的词云图保存为图片,图片路径为"灌篮高手图词云.png"
w.to_file("灌篮高手图词云.png")
print("词云图制作完成!")

# 将字典中的项转换为列表,并按照词频从高到低排序
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)

# 遍历排序后的列表,打印出前1000个词及其出现的次数
for i in range(1000):
word, count = items[i]
print("{0:<10}{1:>5}".format(word, count))

for i in range(1000):

    word, count = items[i]

    print ("{0:<10}{1:>5}".format(word, count))

遍历一个名为items的列表,其中每个元素都是一个包含两个元素的元组。然后,它将元组中的第一个元素赋值给变量word,将第二个元素赋值给变量count。最后,它使用print函数以格式化的方式输出这两个变量的值。举例说明:

假设items列表的内容如下:

items = [("apple", 5), ("banana", 3), ("orange", 7)]

运行这段代码后,输出结果如下:

apple 5
banana 3
orange 7

每行显示一个元组的两个元素,第一个元素左对齐,宽度为10个字符;第二个元素右对齐,宽度为5个字。

counts[rword] = counts.get(rword,0) + 1

这段代码是Python中字典操作的一部分。counts.get(rword,0)表示从字典counts中获取键为rword的值,如果该键不存在,则返回默认值0。然后,将这个值加1,并将结果存回字典counts中。

举例说明:

假设我们有一个字典counts,其中包含一些单词及其出现的次数:

counts = {"apple": 3, "banana": 2, "orange": 1}

现在,我们想要计算单词"apple"的出现次数,并将其加1。我们可以使用以下代码:

rword = "apple"
counts[rword] = counts.get(rword, 0) + 1

执行后,counts字典将变为:

{"apple": 4, "banana": 2, "orange": 1}

"apple"的出现次数增加了1。

items.sort(key=lambda x:x[1], reverse=True)

这段代码是Python中对列表进行排序。它使用了sort()函数,该函数可以对列表进行原地排序(即改变原列表的顺序)。

key=lambda x:x[1]是一个函数,它接受一个元素作为输入,返回这个元素的第二个值(索引为1的值)。lambda关键字用于创建匿名函数。

假设我们有一个列表items,其中每个元素都是一个包含两个元素的列表或元组(

元组是Python中的一种数据结构,它由一组有序的元素组成。每个元素都可以通过索引来访问。元组是不可变的,这意味着一旦创建了元组,就不能修改其中的元素。

# 创建一个包含三个元素的元组
my_tuple = (1, 'apple', True)

# 访问元组中的元素
print(my_tuple[0]) # 输出:1
print(my_tuple[1]) # 输出:'apple'
print(my_tuple[2]) # 输出:True

# 尝试修改元组中的元素(会引发错误)
my_tuple[0] = 2 # TypeError: 'tuple' object does not support item assignment

在这个例子中,我们创建了一个包含三个元素的元组 my_tuple。然后,我们通过索引访问元组中的每个元素,并打印它们。最后,我们尝试修改元组中的一个元素,这会引发一个错误,因为元组是不可变

),例如:

items = [[1, 2], [5, 6], [3, 4]]

运行items.sort(key=lambda x:x[1])后,items将被修改为:

[[1, 2], [3, 4], [5, 6]]

这是因为我们按照每个子列表的第二个元素(索引为1)进行了升序排序这段代码是Python中对列表进行排序的一个例子。它使用了sort()函数,该函数可以对列表进行原地排序(即改变原列表的顺序)。

key=lambda x:x[1]是一个函数,它接受一个元素作为输入,返回这个元素的第二个值(索引为1的值)。lambda关键字用于创建匿名函数。

reverse=True表示我们希望列表按照降序排序。如果reverse=False或不提供此参数,那么列表将按照升序排序。

items = list(counts.items())

假设有一个字典counts,如下所示:

counts = {'apple': 3, 'banana': 5, 'orange': 2}

使用list(counts.items())将字典的键值对转换为列表形式:

items_list = list(counts.items())
print(items_list)

输出结果为:

[('apple', 3), ('banana', 5), ('orange', 2)]

在这个例子中,counts.items()返回一个包含字典键值对的视图对象,然后通过list()函数将其转换为列表。列表中的每个元素都是一个元组,其中第一个元素是键,第二个元素是对应的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值