目录

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. 牛客练习赛81 B. 小 Q 与彼岸花(FWT nlogn做法)
  2. 论新时代软件测试人员的工作之道(一)之一个故事
  3. C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出
  4. VMware ubuntu 虚拟机只剩下lo回环网卡,上不了网(无法上网、无法连接网络)(环回)
  5. 2015.7.17( NOI2015 day1 )
  6. pta - 1132 Cut Integer
  7. 线性表实现一元多项式操作
  8. Linux学习总结(11)——Linux文件查找
  9. java mysql分层_java-数据库连接,分层实现增删改查测试
  10. HTML5期末大作业:个人网站设计——简单响应式个人博客HTML模板(8页面) HTML+CSS+JavaScript...
  11. ubuntu下配置apache2+php+mysql By Assassin
  12. bzoj5394 [Ynoi2016]炸脖龙 树状数组+拓展欧拉定理
  13. 考拉:你以为我想呆萌?幼年吃屎长大磕毒,差点就没活下来
  14. 他来了他来了,英伟达发布全新Hopper架构GPU“H100”4nm制程800亿晶体管
  15. Mac如何保护苹果账户的安全?保护 Apple ID 帐户的技巧分享
  16. 飞腾S2500平台PCIe SWITCH下热插拔验证
  17. 解决“8080端口“被占用问题
  18. sed用法大全(2) 删除
  19. 佟刚老师javaweb笔记(二)
  20. java代码删除ElasticSearch索引

热门文章

  1. 《大数据技术原理与应用(第3版)》期末复习——前两章练习题
  2. Axure 8.1.0.3381激活码 亲测可用
  3. Expecting a string, date or number here, Expression x is instead a freemarker.template.TemplateBoole
  4. Youtube-dl参数说明
  5. 卡尔曼滤波和维纳滤波
  6. php汽车之家数据api,2018汽车之家汽车品牌车型数据新鲜出炉
  7. js打开新窗口,js打开居中窗口,js打开自定义窗口
  8. TCP Socket Client 测试工具,并发测试
  9. 【vcpkg】vcpkg:用于 Windows、Linux 和 macOS 的 C++ 包管理器
  10. 小程序毕设作品之微信体育馆预约小程序毕业设计成品(6)开题答辩PPT