微信公众号: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()
函数将其转换为列表。列表中的每个元素都是一个元组,其中第一个元素是键,第二个元素是对应的值。