当前位置: 首页 > news >正文

Python自动化小技巧11——excel文件的文字内容筛选

上一期讲述了怎么讲多个excel多sheet表进行批量合并,本次案例就是来讲讲合并之后对数据进行清洗整理的过程,筛掉无用的数据。

这个案例中博主是处理文本,主要是各大平台上的新闻的文字。筛选就是把那些无用的主题的新闻给去掉,我采用的是硬编码规则,即给定几个关键词,文章内容只要出现这个关键词,就把这条新闻删掉。

这和机器学习人工智能的方法当然有很大差距,但是在一些工作情况下当然会用的上,比如领导让你找包含什么什么关键词的新闻,如果用excel查找然后再一条条复制粘贴也太慢了.......这种重复性的劳动应该就让脚本来。


查看数据:

 可以看到这个新闻的数据都是文字,我们主要对正文这一列进行筛选。

至于对什么关键词进行筛选,那就是看业务需求了,我这里需要的是金融风险的新闻,所以是对一些广告、政府公告,例如:“”开展xxxx风险排查处置攻坚战专项行动“”这种新闻都要去掉。


定义关键词:

import pandas as pd
name = '合并数据'
df = pd.read_excel('%s.xlsx'%name)
df.drop(df[pd.isna(df['正文'])].index, inplace=True)
key_words= ['提供担保','招聘','到店自提','招标','动画更新','箴言','法律援助','无惧暴雷','跌停板','早报','特卖',
              '上海保险交易所','白条','民政局','豪门','法援','断崖式','发布通知','加盟品牌','快讯','报名通道','防诈骗教育',
              '本站是提供个人知识管理的网络存储空间','农村局','中国邮政','采购','必备收藏','免费订阅','业绩暴雷','脱贫攻坚',
              '魔兽世界','免费法律咨询','个股','免费无条件领取','娱圈揭秘','寻亲','物流专线','热点播报','乡村振兴','强化特训营',
              '球队','中超','电影','华夏幸福','游民评测','游戏','免费景点','关注上方平台二维码','游玩特价','法维',
              '小梨导师','回本计划','大乐透','实操测评','晋江','圣经','味蕾','食材','竞价地址','起拍价','情感语录','法律咨询','特色课程',
              '公务员','挂牌','鸿丰环球','人民法院','党史','耶稣','观世音','每日资讯','全面启动','开售理财产品一览','课程资源',
              '研究报告','斗鱼','虎牙','每日早播','英语','围炉夜话','税务','装修公司','套餐包含','开盘跌停','我要领养','中报暴雷',
              '会员卡','指挥部','推荐理由','电视剧','房源','壁纸','wifi','中报业绩','寻人启事','吴亦凡','娱乐圈','基督','我为群众办实事',
              '热门推荐','美食','实践活动','下面小编','主角光环','早安','加盟店','更健康','质量评测','京东','专项行动',
              '教育部印发','开学工作的通知','查抄','贯彻落实','全面开展','他强调','有关事项通告如下','召开','会议精神','售房','陪嫁',
               '开学时间','国务院','办公厅','抓住关键点','共同富裕','政策落地','教育局','教育厅','病例','文件精神','新冠病毒',
               '比较有优势','全面停止','比较好','比较合适','比较可靠','更可靠','为大家推荐','哪家好','医学','小哈谈教育','有效防范',
               '正式宣布','动真格','都不陌生','我只能说','记得我','管理厅','启动仪式','大家都知道','哪个机构','报志愿','条件已发布',
               '报考条件','明显成效','治理工作','报名入口','留言给','小编总结','关注导航','实施意见','教委发布','安全意识','工作开展',
               '热点背景','圆满结束','交流大会','如果说','哪家机构','如何选','专项整治','全面实施','加快推进','推进落实','防电信诈骗',
               '报考学历要求','高顿研招网','成绩公示','予以公','高质量发展','即可下单','不忘初心','砥砺前行','今日话题','精神文化生活',
               '原创文章','谈婚论嫁','拆迁','缴纳社保','圆满落幕','成功举办','组织部','深入贯彻','警告处分','恋爱关系','加盟方式',
               '散户','报名方式','新闻发布会','传感器','央视新闻','表情包','留言讨论','微淼','包过户','恋爱劈腿','实际控制人','离婚',
               '残疾预防','社保费用','设计','装修风格','百年大计','哪家培训机构','编推荐','雨天气影响','进一步落实','修成正果',
               '在线答疑','高绩效教练','驾驶人','长按识别','为全力做好','关注我们','年度寄语','教育部曝光','新闻热线','宣讲电信诈骗',
               '正在报名中','发挥积极','阿联酋','点击关注','购房合同','正式启动','生育率','概念股','项目建设','金融消保大咖说','恒大',
               '顺利开展','文末领福利','上面蓝','上方扫码','百度云盘下载','法典条文','碧缇福','即将开课','即日起报名','开放三胎','供给侧改革',
               '优惠客服微信','疫苗','代餐粉','点上方蓝','一键关注','代理加盟','总经销商','会员代理','火热报名中','安全驾驶','进展公告',
               '清大燕园','长按扫码','培训现场','幽默笑话','快来参考','实拍图','主要措施','为您服务','访问的太频繁','印发的','一起加油',
               '链接下单','方案发布','健康发展','政审批','旨在净化','民法典','民族文化','关于加强','每日一练','关于征求','房产租售','交易公告',
               '健康养生','特别赠送','香涛书院','为丰富','每日分享','哪个网校好','交警提醒','关于公','哪些好','连锁加盟','践行普惠','公告日期',
               '手游下载','招生电话','实施条例','制度改革','登记表','公示表','被罚','每日积累','每日考点','操作指南','正式实施','招募说明书'
               '郑重提醒','联合印发','指导意见','进一步加强','首次举办以来','文章最底部添加本人连系方式','快来看看吧','防骗短片','免费送',
               '投资者提问','返租','利率定价','欧莱雅','皇帝','独家爆料','背景文案','下载提取码','次第花开','穷人虽穷','广场停业','说的没错',
               '品牌策划','熊三','音频解说','蓝洞新消费','外电报道','家政','嫖娼','宝宝','充电桩','近日印发','全线下跌','较为寒冷','两千年历史']

前几行读取数据,然后对正文这列去个重,然后定义一些关键词列表,我这里关键词有点多.....大家都可以按自己要求来定义。

def check(txt):
    for key_word in key_words:
        if key_word in txt:
            a=False
            break
        else:
            a=True      
    return a

lis_bool=df['正文'].astype('string').apply(check)
df[lis_bool].to_excel('清洗数据.xlsx',index=False)

筛选

然后定义一个函数,循环关键词,若关键词在里面,就返回False,不在就返回True。

用这个函数apply给要处理的列,得到的布尔序列对df进行索引,留下来的就是为True的行,也就是没有关键词的行。

最后进行存储就可以了。

运行之前数据: 

运行之后的数据:

 可以看到数据明显被筛走了一半,现在剩下的新闻都是没有关键词的。

如果想反过来,只留下存在关键词的新闻,那么就把定义的check函数里面的条件判断的位置里面的a=True和a=False进行调换就行。

相关文章:

  • ArrayList的源码分析
  • 不支持TLS的设备如何实现游客登录加密通信方案
  • 【Pandas 数据分析3-2】Pandas 数据读取与输出 - Excel
  • TiDB Dashboard 实例性能分析 - 持续分析页面
  • Spring Boot 集成 Redis 配置 MyBatis 二级缓存
  • 9 二叉树-添加
  • SSM进阶-搭建Dubbo
  • STM32F103 CAN通讯实操
  • JAVA-----注释、字面量、关键字、制表符
  • numpy数组的变形、级联操作、聚合操作、常用的数学函数以及矩阵相关
  • ActiveMQ(二)
  • 某大学ipv6和ipv4结合的校园网规划设计
  • 【程序员表白大师】html七夕脱单必看源码制作
  • 车载VPA形象发展史:谁是第一个吃螃蟹的人?
  • 22.9.30 喜迎暑假多校联赛第二场(欢乐AK找回自信)ABDEFH
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Android组件 - 收藏集 - 掘金
  • Codepen 每日精选(2018-3-25)
  • es6
  • input的行数自动增减
  • Intervention/image 图片处理扩展包的安装和使用
  • Laravel 菜鸟晋级之路
  • Linux快速复制或删除大量小文件
  • node 版本过低
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 阿里云前端周刊 - 第 26 期
  • 大整数乘法-表格法
  • 服务器从安装到部署全过程(二)
  • - 概述 - 《设计模式(极简c++版)》
  • 猴子数据域名防封接口降低小说被封的风险
  • 解析 Webpack中import、require、按需加载的执行过程
  • 线上 python http server profile 实践
  • 延迟脚本的方式
  • 在Mac OS X上安装 Ruby运行环境
  • 数据可视化之下发图实践
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • %check_box% in rails :coditions={:has_many , :through}
  • (3)llvm ir转换过程
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)linux 命令大全
  • (转)Sublime Text3配置Lua运行环境
  • (转)大型网站架构演变和知识体系
  • ***监测系统的构建(chkrootkit )
  • **PHP二维数组遍历时同时赋值
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net解析传过来的xml_DOM4J解析XML文件
  • .Net中的集合
  • @RequestMapping用法详解
  • @SpringBootApplication 包含的三个注解及其含义
  • [20160902]rm -rf的惨案.txt