python词频统计小项目
目录
1.项目简介:
2.代码如下:
1.countwords.py
2.UIjiemian.py
3.运行结果,界面显示:编辑
4.柱状图显示
1.项目简介:
编写程序统计QQ导出的聊天记录,对发言人发言的次数进行统计,并将出现次数最多(次数排名前10)的发言人进行降序显示,并绘制柱状图。
有简单界面显示
2.代码如下:
1.countwords.py
import matplotlib.pyplot as plt
import re
"""
函数名:ReadDir
功能:读取文件并存入列表中
参数:path 文件路径
返回值:DataList 列表存文件数据
"""
def ReadDir(path):f = open(path, "r", encoding="utf-8") # 只读打开文件 utf-8 编码DataList = [] # 列表for item in f.readlines(): # 按行读取if "2022-" in item and "Q" not in item and "系" not in item:#只存含有 2022 且不含有Q 系的行lin = item.split()[-1].split('(')[0].split('<')[0] # 每行先按空格分两份 取最后一个 再按( 或<分两份 取第一段DataList.append(lin) # 追加到列表f.close()print(DataList)return DataList"""
函数名:DataChuli
功能:处理读取到的数据 大到小排序 替换“”为匿名 替换ego 为高老师 选取前10位
参数:DataList 读取到的数据
返回值:无
"""
def DataChuli(DataList):MyData = {} # 字典存名字和发言次数for item in DataList: #修改列表中的 “”和 egoif item == "":DataList[DataList.index(item)] = "匿名"if item == "ego":DataList[DataList.index(item)] = "高老师"for item in DataList:# 从列表中读取一个名字加入字典中作为 键# 用get从列表中获取数据加入字典 若字典中有则返回值并加一MyData[item] = MyData.get(item, 0) + 1NameList = list(MyData.items()) # 将字典放入列表中SortNmae = sorted(NameList, key=lambda x: x[1], reverse=True) # 按值大小排序print(SortNmae)global name_key_listname_key_list=[]#名字global name_val_listname_val_list =[]#列表for i in range(0, 10):name_key = SortNmae[i].__getitem__(0)name_val = SortNmae[i].__getitem__(1)name_key_list.append(name_key)name_val_list.append(name_val)print("名字;{} || 发言次数:{}".format(name_key, name_val))"""
函数名:Baocun
功能:保存图表
参数:无
返回值:无
"""
def Baocun():plt.savefig("柱状图.png")
"""
函数名:Xianshi
功能:柱形图表显示
参数:无
返回值:无
"""
def Xianshi():plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif'] #plt.rcParams['font.size'] = 12plt.figure(figsize=(30, 8), facecolor="#B0C4DE", dpi=80)plt.barh(name_key_list,name_val_list, height=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'g', 'b'])plt.xlabel("发言次数")plt.ylabel("姓名")plt.title("21071班QQ群发言次数统计")plt.show()
2.UIjiemian.py
import tkinter as tk
import tkinter.filedialog
from countwords import ReadDir,DataChuli,Xianshi,Baocun"""
函数名:fun1 导入按钮的功能函数
功能:打开一个对话框 ,选择文件并返回路径字符串
参数:无
返回值:无
"""
def fun1():path=tkinter.filedialog.askopenfilename()#打开一个对话框,选择文件并返回路径字符串print(path)DirPath.set(path)global Glog_DirPathGlog_DirPath=DirPath.get()
"""
函数名:fun2 打开按钮的功能函数[]
功能:调用 读数据 处理数据 图标显示 函数
参数:无
返回值:无
"""
def fun2():Temp = ReadDir(Glog_DirPath)DataChuli(Temp)Xianshi()"""
函数名:fun3 保存按钮的功能函数
"""
def fun3():Baocun()
"""
函数名:JieMian
功能:设置导入文件的ui
参数:无
返回值:无
"""
def JieMian():window = tk.Tk()window.title("聊天消息词频统计")window.geometry('400x300')# window.iconbitmap("app.ico")#更改窗口图表global DirPathDirPath= tk.StringVar()label = tk.Label(window, text="欢迎使用", bg="silver", \font=("宋体", 20), width=30, height=5)label.pack()button_in = tk.Button(window, text="文件导入", bg="silver", \font=("宋体", 10), width=10, height=2, command=fun1)button_in.place(x=270, y=150)in_put = tk.Entry(window, textvariable=DirPath)in_put.place(x=120, y=150)button_open = tk.Button(window, text="打开", bg="silver", \font=("宋体", 10), width=10, height=2, command=fun2)button_open.place(x=100, y=200)button_open = tk.Button(window, text="保存", bg="silver", \font=("宋体", 10), width=10, height=2, command=fun3)button_open.place(x=200, y=200)window.mainloop()#调用
JieMian()
3.运行结果,界面显示:
![](/assets/blank.gif)
4.柱状图显示
![](/assets/blank.gif)
python词频统计小项目相关推荐
- python单词统计、给定一个段落()_自己动手Python写一个词频统计小项目
这里用python做一个小小的英文词频的统计.当然了,自己写的,就没有停词.计算词语权重这些功能了,纯粹是写写代码练练手. 首先呢,这里是一篇英文文章,就像下面这样的185个小段落,数据量还是不大的, ...
- python词频统计(word ——> excel,含去重)
word资料处理 -------> 存入excel 精简地从word文档读取资料,分析后传入excel文档. 不是txt!因为我的电脑是mac,针对txt的乱码问题解决不了. 主要操作的思维导图 ...
- 201671010411+巩定定+词频统计软件项目报告
课程名 软件工程 实验二 词频统计软件项目报告 词频(TF) 是一个词语出现的次数除以该文件的总词语数. 实验目的 (1)掌握软件项目个人开发流程. (2)掌握Github上发布软件项目的操作方法. ...
- python词频统计时、文件放哪里_初学python,词频统计小实验
最近突然对python感兴趣,就学了起来.我可怜的计算机基础只有VB,而且学的时候这门课还特别水,仅仅了解了语法,考试基本上是背题过的. 现在自学python还是比较吃力.今天捣鼓了一下午,搞出了一个 ...
- Python词频统计之密信约定进攻时间
问题 假设你是小蔡,你和小徐同学一起穿越到了抗战时期,分别成为了八路军华北根据地A地和B地的联络员.此时,两地的八路军部队准备发动协同进攻,给予日寇重重一击.由于某些原因无法亲自送信,为了约定进攻时间 ...
- python 词频统计,分词笔记
Python的中文分词库有很多,常见的有: jieba(结巴分词) THULAC(清华大学自然语言处理与社会人文计算实验室) pkuseg(北京大学语言计算与机器学习研究组) SnowNLP pynl ...
- Python练手小项目
一.画爱心表白 1.图形都是由一系列的点(X,Y)构成的曲线,由于X,Y满足一定的关系,所以我们就可以建立模型,建立表达式expression,当满足时,两个for循环(for X in range: ...
- 201671010417 金振兴 词频统计软件项目报告
1.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发. .程序可读入任意英文文本文件,该文件中英文词数大于等于1个. . ...
- python有趣的小项目-10 个最值得 Python 新人练手的有趣项目
原标题:10 个最值得 Python 新人练手的有趣项目 作者 | Claire D. Costa 编译 | Wendy 有很多 Python 新手留言问:"Python 入门很久了,但项目 ...
最新文章
- UTXO Commitment有望彻底解决大区块存储问题
- Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — Buffer descriptor table
- js给php注册网页添加实时监听,js 实现watch监听数据变化的代码
- php企业黄页源码,PHPCMS 企业黄页模块 v9 GBK 正式版
- selenium 页面经常改变元素_selenium用jquery改变元素属性
- discuz php mysql_php下mysql数据库操作类(改自discuz)
- 显示器颜色偏灰不鲜明_你离学会后期调色,只差了一块颜色“正确”的摄影显示器...
- 揭秘Harbor镜像仓库——首个源自中国的CNCF毕业项目
- 【吴恩达机器学习】正则化
- Spring事务@Transactional注解原理
- mysql 5.6 触发器_【mysql】mysql触发器使用示例
- win10多用户同时登陆
- C语言程序设计笔记(浙大翁恺版) 第二周:计算
- 语音识别(ASR)论文优选:A comparison of streaming models and data augmentation methods for robust speech recog
- MySQL卸载重装解决方案
- 做一个成功的软件项目经理
- 2022数学建模国赛C题思路分析
- 【医学影像】几个医学影像专业一定要知道的网站
- 日语的文艺与娱乐休闲
- “好奇号”顺利完成”火星第一勺“