目录

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.运行结果,界面显示:

词频统计-界面

4.柱状图显示

柱状图

python词频统计小项目相关推荐

  1. python单词统计、给定一个段落()_自己动手Python写一个词频统计小项目

    这里用python做一个小小的英文词频的统计.当然了,自己写的,就没有停词.计算词语权重这些功能了,纯粹是写写代码练练手. 首先呢,这里是一篇英文文章,就像下面这样的185个小段落,数据量还是不大的, ...

  2. python词频统计(word ——> excel,含去重)

    word资料处理 -------> 存入excel 精简地从word文档读取资料,分析后传入excel文档. 不是txt!因为我的电脑是mac,针对txt的乱码问题解决不了. 主要操作的思维导图 ...

  3. 201671010411+巩定定+词频统计软件项目报告

    课程名 软件工程 实验二 词频统计软件项目报告 词频(TF) 是一个词语出现的次数除以该文件的总词语数. 实验目的 (1)掌握软件项目个人开发流程. (2)掌握Github上发布软件项目的操作方法. ...

  4. python词频统计时、文件放哪里_初学python,词频统计小实验

    最近突然对python感兴趣,就学了起来.我可怜的计算机基础只有VB,而且学的时候这门课还特别水,仅仅了解了语法,考试基本上是背题过的. 现在自学python还是比较吃力.今天捣鼓了一下午,搞出了一个 ...

  5. Python词频统计之密信约定进攻时间

    问题 假设你是小蔡,你和小徐同学一起穿越到了抗战时期,分别成为了八路军华北根据地A地和B地的联络员.此时,两地的八路军部队准备发动协同进攻,给予日寇重重一击.由于某些原因无法亲自送信,为了约定进攻时间 ...

  6. python 词频统计,分词笔记

    Python的中文分词库有很多,常见的有: jieba(结巴分词) THULAC(清华大学自然语言处理与社会人文计算实验室) pkuseg(北京大学语言计算与机器学习研究组) SnowNLP pynl ...

  7. Python练手小项目

    一.画爱心表白 1.图形都是由一系列的点(X,Y)构成的曲线,由于X,Y满足一定的关系,所以我们就可以建立模型,建立表达式expression,当满足时,两个for循环(for X in range: ...

  8. 201671010417 金振兴 词频统计软件项目报告

    1.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发. .程序可读入任意英文文本文件,该文件中英文词数大于等于1个. . ...

  9. python有趣的小项目-10 个最值得 Python 新人练手的有趣项目

    原标题:10 个最值得 Python 新人练手的有趣项目 作者 | Claire D. Costa 编译 | Wendy 有很多 Python 新手留言问:"Python 入门很久了,但项目 ...

最新文章

  1. UTXO Commitment有望彻底解决大区块存储问题
  2. Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — Buffer descriptor table
  3. js给php注册网页添加实时监听,js 实现watch监听数据变化的代码
  4. php企业黄页源码,PHPCMS 企业黄页模块 v9 GBK 正式版
  5. selenium 页面经常改变元素_selenium用jquery改变元素属性
  6. discuz php mysql_php下mysql数据库操作类(改自discuz)
  7. 显示器颜色偏灰不鲜明_你离学会后期调色,只差了一块颜色“正确”的摄影显示器...
  8. 揭秘Harbor镜像仓库——首个源自中国的CNCF毕业项目
  9. 【吴恩达机器学习】正则化
  10. Spring事务@Transactional注解原理
  11. mysql 5.6 触发器_【mysql】mysql触发器使用示例
  12. win10多用户同时登陆
  13. C语言程序设计笔记(浙大翁恺版) 第二周:计算
  14. 语音识别(ASR)论文优选:A comparison of streaming models and data augmentation methods for robust speech recog
  15. MySQL卸载重装解决方案
  16. 做一个成功的软件项目经理
  17. 2022数学建模国赛C题思路分析
  18. 【医学影像】几个医学影像专业一定要知道的网站
  19. 日语的文艺与娱乐休闲
  20. “好奇号”顺利完成”火星第一勺“

热门文章

  1. 团队管理课程培训心得(二)
  2. java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码、数据库)
  3. 苹果驱动安装不了,一定要进来看
  4. 怎么看手机计算机的记录表,教您如何查看6个月前的通话记录,包括中国联通手机!...
  5. Android 模仿手机QQ表情输入和表情预览框
  6. c++中的fork函数_fork函数
  7. 总结及寒假计划 2019.1
  8. ptapython答案第四章_ptapython答案
  9. linux 时间函数
  10. UiPath安装教程