前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >肝了一夜,我用Python做了一个垃圾分类器!

肝了一夜,我用Python做了一个垃圾分类器!

作者头像
博文视点Broadview
发布2023-05-19 19:12:09
7030
发布2023-05-19 19:12:09
举报
文章被收录于专栏:博文视点Broadview
代码语言:javascript
复制

自2019年7月,上海市率先实现垃圾分类政策开始,很多城市陆续推出垃圾分类的政策,积极响应国家号召,为建设成绿色环保的新城市而努力。预估在2020年底,先行先试的46个重点城市!

前段时间,小编所在的城市蓝鲸也开始了垃圾分类,每次去扔垃圾都在要提前科普查询一下:你这个是什么垃圾!!好麻烦啊,既然是玩Python,不如动手写一个程序进行垃圾分类的学习,肝了一夜终于完成了

01

垃圾分类的数据获取

根据《上海市生活垃圾管理条例》,城市生活垃圾主要分为以下四类:

  • 可回收物,是指废纸张、废塑料、废玻璃制品、废金属、废织物等适宜回收、可循环利用的生活废弃物;
  • 有害垃圾,是指废电池、废灯管、废药品、废油漆及其容器等对人体健康或者自然环境造成直接或者潜在危害的生活废弃物;
  • 湿垃圾,即易腐垃圾,是指食材废料、剩菜剩饭、过期食品、瓜皮果核、花卉绿植、中药药渣等易腐的生物质生活废弃物;
  • 干垃圾,即其它垃圾,是指除可回收物、有害垃圾、湿垃圾以外的其它生活废弃物。

为了获取垃圾分类数据集,小编经过资料的查询,在码云中小编找到一个垃圾分类数据库,数据库中总共包含了可回收垃圾、有害垃圾、湿垃圾、干垃圾、大件垃圾五种类别,每种类别的垃圾数目如下表所示:

02

垃圾分类学习器设计

1).整体设计思路

垃圾分类学习器包含了学习模块和测试模块两部分,用户可以根据需求对垃圾类别进行学习,在经过一定的学习后,通过测试模块对自己的学习成果进行检验,检验自己能否将垃圾正确分类。

整个学习器的设计过程包含了数据处理、学习模块搭建、测试模块搭建三个部分,接下来小编将对每一个模块进行编程的实现。

2).数据处理

这里使用大名鼎鼎的pandas进行数据处理,通过pd.read_csv可以获取原始表格数据,通过dfdf["class"] == 2中修改参数数字2获取不同种类垃圾的list,到此,就可以获取所有种类的垃圾以及不同种类垃圾的list数据,是不是很简单呢。

3).学习模块搭建

学习模块总共包含了垃圾分类意义的显示,四种常见垃圾的图标显示,以及不同种类垃圾的滑动文本框显示,下面将对程序展开具体介绍。

上面代码是垃圾分类意义的显示和四种常见垃圾的图标显示程序,由程序可以看出,显示设计的思路大致为:

  • 首先在root主窗口中建立相应的tk.Frame,并确定其在主窗口的位置;
  • 然后利用tk.Label标签显示文字信息,镶嵌在tk.Frame的具体位置进行显示
  • 对于图片的显示却不太简单,需要在root主窗口中建立新的tk.Canvas,并根据设计好的大小对图像进行Resize操作,canvas2.create_image创建图片才得以显示;

4).垃圾的分类

对于枚举类垃圾的显示则更为复杂,下面会详细介绍:

为了实现对不同类别垃圾的展示学习,需要调用按键回调函数,获取枚举类的信息,再根据获取的信息进行相应类别垃圾信息的显示。

  • 我们先建立了垃圾类的list,通过OptionMenu部件进行枚举类的显示;
  • 为了实现对类别的实时更新,调用按键的回调函数garbage_process,对scrolledtext.ScrolledText滚动文本框进行写入;
  • 这里需要注意的是,如果将scrolledtext.ScrolledText安放在root主界面上,会产生位置错位的情况;
  • 小编这里新建了canvas3画布,将scrolledtext.ScrolledText放在了canvas3画布进行显示;

到这里便完成了学习模块界面的设计,显示效果如下:

03

测试模块搭建

对于测试模块,其搭建的思想和垃圾枚举类的搭建类似,但是加入了单选按钮模块,使用用户可以进行自我测试,检测自己学习的成果。

在上面的代码中,可以看到,获取所有的垃圾名字作为枚举类OptionMenu对象创建下拉选项,用户可以数据库中选择垃圾品种进行自我测试。

当选择完垃圾后,对垃圾进行分类,利用单选按钮Radiobutton部件选择垃圾种类,选择完成之后,左键按下选择练习按键,调用ceshi_process函数与数据库中信息进行比对,对结果进行输出。若正确,给予鼓励,否则进行纠正。整体界面显示如下:

最后我们来演示一下,整个过程:

后面我会录制视频放在我们的B站(搜索:菜鸟玩Python)上面,到时源码视频一起奉上!

希望大家都加入到垃圾分类的队伍中来,保护环境从你我做起,让水更清天更蓝,贡献一小份力量吧!

Python图书推荐


1 ▊《疯狂Python讲义》

李刚 编著

  • 从零开始Python编程,从入门到实践一网打尽
  • 覆盖的知识面广,知识体系完备且系统

(扫码获取本书详情)

2 ▊《看漫画学Python:有趣、有料、好玩、好用(全彩版)》

关东升 著,赵大羽 绘

  • 漫画图解,轻松快速入门Python
  • 有趣、简单!还提供配套视频

(扫码获取本书详情)

3 ▊《网络工程师的Python之路:网络运维自动化实战》

王印 著

  • Python零基础网工自学入门图书
  • 资深网络老兵、知乎专栏“网路行者”作者全力打造
  • 从基础知识到实战应用手把手教学

(扫码获取本书详情)

4 ▊《Python3网络爬虫宝典》

韦世东 著

  • 从实际的爬虫业务需求延伸到知识点和具体实现
  • 深入讲解网页正文智能提取算法、分布式爬虫、项目部署与定时调度等热门爬虫技术

(扫码获取本书详情)

5 ▊《对比Excel,轻松学习Python数据分析》

张俊红 著

  • 利用Python进行数据分析
  • 数据从业者案头实操工具书

(扫码获取本书详情)

6 ▊《Python数据可视化之美:专业图表绘制指南(全彩)》

张杰著

  • Matplotlib包首席开发者与plotnine包的开发者墙裂力荐
  • 助你找到数据可视化的灵感

(扫码获取本书详情)

7 ▊《漫画算法:小灰的算法之旅(Python篇)》

魏梦舒 著

  • 2019年度科技爆款图书之Python篇
  • 小仓鼠带你轻松入门算法与数据结构

(扫码获取本书详情)

如果喜欢本文

欢迎 在看留言分享至朋友圈 三连

热文推荐 


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1).整体设计思路
  • 2).数据处理
  • 3).学习模块搭建
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档