数据分析处理之词频统计

2023-10-30

摘要:
本次项目主要是对英文文献进行词频统计,利用给定的数据集中已分好的初级、中级、高级三个等级,对英文文献中的单词进行分级处理,并得到各个等级所占比重,画出统计图(饼图)。此项目用到python的模块有:tkinter(用来搭建词频统计的前台界面)、pandas、numpy、operator、matplotlib。第一章主要介绍数据预处理,第二章对功能进行介绍,第三章实现前台界面与功能实现。

一、数据处理

1.导入xlsx数据集
在这里插入图片描述
导入后利用head初步查看数据集情况
在这里插入图片描述
根据显示结果可以看出,数据集中有大量的NaN空值出现,两个单词挤在同一个单元格中的情况,单词前后还有大量的空格等问题,单词无法全部正常读入,这样都会影响后面词频统计和计算各个等级占比,所以下面要对数据进行清洗。
2.查看数据类型
在这里插入图片描述
3.多列变为一列
首先要把DataFrame类型转化为Array,然后运用Array中的reshape方法把多列变为一列。
在这里插入图片描述
在这里插入图片描述
4.去除含有NaN的行
去除NaN需要用到dropna方法,但是dropna方法针对DataFrame类型,所以首先需要把array类型转为DataFrame。
在这里插入图片描述
在这里插入图片描述
5.定义列名
在这里插入图片描述
6.去除特殊符号
单词中含有空格、特殊字符等一些特殊符号,会影响到计算结果。所以我们利用Strip方法对primary数据集进行操作
去空格
在这里插入图片描述
去数学符号
在这里插入图片描述
7.分裂数据
单词有多个单词在一个单元格的情况。要对其进行分裂处理,word book1 中可以看到两个单词中间是\n,所以我们用\n来作为标志,来进行分裂。
在这里插入图片描述

可以看出单词已从第一列中分离出来,并多出两列进行存放分裂出来的单词,下面把分裂出的单词也都放在第一列。

在这里插入图片描述

再次去除数据集中的NaN,得到处理完成的数据集为:primary。
在这里插入图片描述
根据处理word book1 的方法,同样处理word book2、word book3,处理完成后的命名分别为middle、senior。

二、功能实现

需要实现三个功能,一个是词频统计,一个是各个等级占比统计,还有统计图的绘制。我选取了一篇英文演讲稿。

1.词频统计

在这里插入图片描述
首先把文章中所有的单词转换为小写,然后利用字典遍历文章中所有的单词,计算每一个单词所出现的次数,为了能够更清楚直观的显示,修改词频格式。
结果图:
在这里插入图片描述

2.词汇等级统计

此功能为了实现统计文章中的单词都在初、中、高、其他词汇中所占比重。也可以看出文章的难以程度,我们利用For循环遍历整个文章,其中如果单词在数据集primary中则我们给定计数器j加1,如果在数据集middle则给计数器k加1,如果在数据集senior给计数器m加1,剩下的单词则为其他词汇的计数器W所接受,g为总单词数的计数器。最后输出各个计数器数值与总数的比例。代码如下:
在这里插入图片描述
结果图:

在这里插入图片描述

3.绘制统计图

根据上面词频统计所得到的各个等级的单词数,可以进行绘制统计图。利用matplotlib.pyplot中的pie进行绘制饼图,可以更好的体现各个等级占比数。代码如下:
在这里插入图片描述
结果图:

在这里插入图片描述

三、前台界面设计与功能实现

Python中前台界面设计需要利用tkinter模块来实现。
在这里插入图片描述
首先创建窗口并定义名字和大小。界面设计代码如下:

在这里插入图片描述

界面展示:
在这里插入图片描述

Entry为输入英文文章框,与词频统计button紧密相连,点击“词频统计”则触发onclick方法,onclick方法为封装好的词频统计功能。其中统计的文章为用户在Entry中输入的英文文章,利用get方法得到输入框内容,来进行统计。统计结果利用insert方法输出到下面的Text文本框中。
实现代码为:

在这里插入图片描述

词频统计结果图:
在这里插入图片描述

点击“统计每个级别所占比”按钮,运用Buttoon 中的command调用封装好的word_frequency方法,用来计算占比,和绘制统计图。计算的占比显示在下面的Text文本框中。实现代码为:

在这里插入图片描述

结果图:

在这里插入图片描述

点击“画出统计图”则弹出另一个界面显示所绘制得饼图。界面封装函数代码为:
在这里插入图片描述

利用PhotoImage提取打印出的饼图,显示在Label中,并且利用TOPLEVEL重新开启一个新的窗口中显示。得到如图下面得结果。

在这里插入图片描述

结论
第二章中我们是给定一个英文文章,然后给定词频统计、各个等级占比、绘制统计图,第三章中利用图形界面我们把这项工作变得智能化。可以输入不同得文章进行词频统计、各个等级占比、绘制统计图。可以说这是个小型得软件程序。通过此次实验中遇到得问题我看到了数据预处理的重要性,它可以直接关系到后面功能的准确度。根据自己不断的优化和清洗数据,使得现在得程序已经基本稳定,数值基本准确。以前没有接触到Tkinter,通过这次学习也对它有了进一步得了解,下一次应该会找一个更大得数据集来对软件进行优化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据分析处理之词频统计 的相关文章

  • 无法在 PIL 中对 16 位 TIF 应用图像滤镜

    我尝试使用 python 应用图像过滤器PIL http www pythonware com products pil 代码很简单 im Image open fnImage im im filter ImageFilter BLUR 此
  • 默认情况下在 Jupyter 笔记本中配置第一个单元

    有没有办法为 Jupyter 笔记本中的特定 python 内核配置默认的第一个单元 我同意默认的 python 导入违背了良好的编码实践 那么 我可以配置笔记本 使新的 python 笔记本的第一个单元始终是 import numpy a
  • 出现导入错误:无法从“随机”导入名称“随机”[重复]

    这个问题在这里已经有答案了 我在我的计算机上多次运行我的代码 但没有出现此错误 但突然间这个来了 File e Python 3 8 0 lib site packages comtypes client code cache py lin
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • 地图与星图的性能?

    我试图对两个序列进行纯Python 没有外部依赖 逐元素比较 我的第一个解决方案是 list map operator eq seq1 seq2 然后我发现starmap函数来自itertools 这看起来和我很相似 但事实证明 在最坏的情
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • int 对象在尝试对数字的数字求和时不可迭代? [复制]

    这个问题在这里已经有答案了 我有这个代码 inp int input Enter a number for i in inp n n i print n 但它抛出一个错误 int object is not iterable 我想通过将每个
  • ValueError:在 R 中使用 keras 模型时在用户代码中

    我正在尝试使用 R 在 R 中运行一维 CNNkeras包裹 我正在使用以下代码 library MASS library keras Create some data data Boston data lt Boston create a
  • 如何最好地将包含列表或元组的 Pandas 列提取到多个列中[重复]

    这个问题在这里已经有答案了 我不小心用错误重复的链接关闭了这个问题 这是正确的 Pandas 将列表的列拆分为多列 https stackoverflow com questions 35491274 pandas split column
  • 将 csv 文件按多列拆分为 panda 数据框

    我有一个包含多列的 tsv 文件 有 10 多列 但对我来说重要的列是名称为 user name shift id url id 的列 我想创建一个数据框 首先根据用户名分隔整个 csv 文件 即只有具有相同用户名的行才会分组在一起 从该块
  • 如何抑制 pyinstaller 生成的可执行文件窗口中的所有警告

    我已经使用 pyinstaller 从 python 文件生成了可执行文件 该程序按其应有的方式工作 但在我想隐藏的窗口中出现了一条警告消息 当 python 文件在 IDE 中运行时 以下行会抑制所有警告消息 warnings filte
  • 监控单个文件

    我需要监控 使用watchdog http pythonhosted org watchdog index html 单个文件 而不是整个目录 避免监视整个目录的最佳方法是什么 我想this http pythonhosted org wa
  • 多线程写入文件

    前几天刚开始使用 python 对多线程的整个概念还很陌生 我在多线程时写入文件时遇到问题 如果我按照常规方式执行此操作 它会不断覆盖正在写入的内容 使用 5 个线程写入文件的正确方法是什么 不降低性能的最佳方法是在所有线程之间使用队列 每
  • Python unittest - 与assertRaises相反?

    我想编写一个测试来确定在给定情况下不会引发异常 测试是否有异常很简单is上调 sInvalidPath AlwaysSuppliesAnInvalidPath self assertRaises PathIsNotAValidOne MyO
  • 具有条件的重复行 pandas dataframe python

    我的数据框有问题 我的 df 是 product power brand product 1 3 x 1500W brand A product 2 2x1000W 1x100W product 3 1x1500W 1x500W brand
  • Python 类方法的示例用例是什么?

    我读了Python 中的类方法有什么用 https stackoverflow com questions 38238 what are class methods in python for但那篇文章中的例子很复杂 我正在寻找 Pytho
  • sklearn 中带有词袋和附加情感特征的文本分类器

    我正在尝试构建一个分类器 除了词袋之外 还使用情绪或主题 LDA 结果 等特征 我有一个包含文本和标签的 pandas DataFrame 并且想添加情感值 5 到 5 之间的数字 和 LDA 分析结果 带有句子主题的字符串 我有一个工作词
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • python pandas如何在多个条件下过滤字符串

    我有以下数据框 import pandas as pd data 5Star FiveStar five star fiv estar data pd DataFrame data columns columnName 当我尝试用一 种条件
  • 连接运算符 + 或 ,

    var1 abc var2 xyz print literal var1 var2 literalabcxyz print literal var1 var2 literal abc xyz 除了带有 的自动空格之外 两者有什么区别 哪个通

随机推荐

  • c++string替换指定位置字符_小白打怪进阶之路:Day3 用字母位置替换字符串

    几句废话 周末愉快 如果周末你还在学习 那可以说是相当优秀 当一个人知道自己想要什么的时候 脚步也会越来越坚定 给奋斗中的你点赞 下面开始今天的打怪 请听题 这个题目的要求是 给定一个字符串 用它在字母表中的位置替换每个字母 如果文本中的任
  • blender快捷键

    1 shift a 添加物件 2 rgs 这三个按键 可以分别对模型进行旋转移动缩放 3 shift d 可以实现复制功能 alt d 关联复制 4 使用 z 键可以切换到线框模式 再按一次切换回来 5 数字键旋转 中心 6 tab 按键可
  • 数据的导入

    Excel数据的导入就是相当于批量的新增 可以快速的添加多条数据 给导入按钮一个点击事件 打开导入的模态框 下载模板文件 点击下载按钮可以下载文件的功能 操作如下 首先要把模板放到项目中对应的目录下 获取到文件的物理路径 定义一个方法 返回
  • 基于Hugging Face的transformers包的微调模型训练

    transformers API参考链接 https huggingface co docs transformers v4 21 2 en training train py from datasets import load datas
  • IPD产品开发流程详解

    为什么80 的码农都做不了架构师 gt gt gt 集成产品开发 Integrated Product Development 简称IPD 是一套产品开发的模式 理念与方法 IPD的思想来源于美国PRTM公司出版的 产品及生命周期优化法一书
  • MySQL基础------sql指令1.0(查询操作->select)

    目录 前言 单表查询 1 查询当前所在数据库 2 查询整个表数据 3 查询某字段 4 条件查询 5 单行处理函数 聚合函数 6 查询时给字段取别名 7 模糊查询 8 查询结果去除重复项 9 排序 升序和降序 10 分组查询 11 分页查询
  • SSM-easyui 添加多个tabs页面出现混乱

    框架是springMVC 用easyui穿件tabs 使用href创建两个tabs的话 第一个里面的内容部分会进入第二个tab 第二个里面的内容也会进入第一个
  • 个性化推荐系统该如何评估,四种不同策略的角度

    对推荐结果的评估一直都是十分重要的环节 一个推荐算法或者说排序的优劣直接体现在这些评估指标上 具体地 有三种方式 分别是产品数据层面 机器学习算法层面 用户体验层面 推荐系统产品上 最能体现系统 算法在业务层面的价值 因为一个再牛逼的产品
  • 开源免费的pdf文档编辑器LibreOffice

    前言 一般adobe rader 福昕的pdf工具只能读pdf文档 想要编辑pdf就要收费 哎 我是穷人啊 说多了都是泪啊 现在福利来了 免费开源好用的pdf编辑器哪家强 我给大家郑重 推荐LibreOffice LibreOffice下载
  • AssetBundle加载和销毁机制

    AssetBundle加载和销毁机制 AssetBundle内存管理 AssetBundle加载和销毁图 AssetBundle加载分为三个部分 AssetBundle相关对象销毁的几个方法 AssetBundle 和 Resource 的
  • 【LeetCode刷题】160 相交链表 java

    题目 给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点 如果两个链表不存在相交节点 返回 null 图示两个链表在节点 c1 开始相交 示例 方法一 先遍历两个链表得到各自长度 然后求出总节点的差值
  • 桂院校园导航

    这里记录开发校园导航小程序的一些技术问题及解决方案的文章 所有的说明文档都在当前的CSDN文章专栏里 点进去就可以看到所有的 可以点个关注不迷路 文章中有任何的步骤有问题可以私聊我说明问题情况 开源仓库 平台 仓库 Gitee 桂院校园导航
  • Linux命令总结大全,包含所有linux命令

    使用说明 此文档包含所有的Linux命令 只有你想不到的没有你看不到的 此文档共计10万余字 有8400多行 预计阅读时间差不多需要3个小时左右 所以要给大家说一说如何阅读此文档 为了方便大家阅读 我这里做了相关索引 建议使用搜索的方式阅读
  • 华为硬件工程师社招机考题库_华为电子软硬件工程师招聘笔试题

    华为面题 硬件 全都是几本模电数电信号单片机题目 1 用与非门等设计全加法器 2 给出两个门电路让你分析异同 3 名词 sram ssram sdram 4 信号与系统 在时域与频域关系 5 信号与系统 和4题差不多 6 晶体振荡器 好像是
  • 【云原生】Prometheus之图形化界面grafana与服务发现部署

    内容预知 前言 1 部署 Grafana 1 1 grafana的下载与安装 1 安装grafana 2 配置数据源 3 导入 grafana 监控面板 4 删除模板操作 4 2 grafana的中文插件安装 2 部署 Prometheus
  • Mybatis快速入门(XML,注解方式)

    简介 什么是Mybatis Mybatis是一个优秀的基于java的持久层框架 它内部封装了JDBC 使开发者只需要关注SQL语句本身 而不需要花费精力去处理加载驱动 创建连接 创建Statement等繁杂的过程 Mybatis通过XML或
  • js中把数字转换成汉字输出

    目录 背景 实现方法 方法1 方法二 支持9位以上也就是亿级别的 如果需要钱的那种单位 把注释放开就行 背景 我们日常开发中可能遇到这种场景 将js中的数字转化为中文的汉字 数字110 输出 一百一十 数字11 输出 十一 js中把数字转换
  • 一文看尽 2020 年谷歌 AI 重大突破

    2021 01 28 10 12 14 在二十年前刚刚加入谷歌时 我们关注的问题只有一个 如何面向这么多不同种类的联网计算机提供一整套质量出色且涵盖范围全面的网络信息搜索服务 到如今 尽管我们面临着各种各样的技术挑战 但谷歌已经基本达成了组
  • PowerDesigner 15.1 安装步骤详细图解及破解

    准备工作 下载 PowerDesigner 15 1 的安装文件和破解文件 PowerDesigner 15 1 下载地址 http pan baidu com share link shareid 177870 uk 3626956064
  • 数据分析处理之词频统计

    摘要 本次项目主要是对英文文献进行词频统计 利用给定的数据集中已分好的初级 中级 高级三个等级 对英文文献中的单词进行分级处理 并得到各个等级所占比重 画出统计图 饼图 此项目用到python的模块有 tkinter 用来搭建词频统计的前台