学 Python 都用来干嘛的? - 海燕的回答 - 知乎

在上面的回答中,我做了两个小工具“Excel自动处理工具”和“商品抓取工具”,有小伙伴想看看教程,所以就有了这篇文章。

一、“excel处理器”是怎样的?

(一)理清工作流程

我的做电商运营的朋友,需要处理许多Excel文件,里面包含电商网站“商品搜索热度”和“全网商品数量”等数据,要从里面找出一些优质的“搜索关键词”,据此上架商品。

每天拿到表格,打开,插入三列空白表格,输入进行计算【竞争激烈度 = 搜索指数 / 全网商品数】【指标A = 某列数据 / 某列数据】【指标B = 某列数据 / 某列数据】

按指标B从大到小排序,删除表格中带有“品牌字样”的关键词

复制优质关键词,到空白表格中。

重复以上步骤25次,大概要用1.5个小时.....

(二)自动化思路

根据上面的流程我做了个工具。

输入屏蔽词(各种品牌的名字),点击【选择文件】和【处理文件】,然后pandas自动计算【市场竞争】【指标A 】【指标B】、删除含有屏蔽词的对象、排序,自动处理25个表格之后,把所有表格复制到空表格,并排序,全部输出到一个文件。

嘿嘿,1.5小时的工作,用时不到3秒完成。


二、教程

现在让我们一步一步代码写出来

(一)传统艺能:引用库

import 

(二)创建图形界面,构建程序框架

我们希望写一个什么样的工具呢?有图形界面,能选择文件,能处理文件

#定义一个类
class demo(object): def __init__(self):window = tk.Tk() # 创建一个软件窗口window.geometry('240x160') # 设置窗口大小window.title('Excel文件处理') # 设置窗口名称tk.mainloop() # 开启窗口循环def cho_files(self): # 创建功能:选择文件pass # 先写个名字,之后再写具体功能def deal_files(self): # 创建功能:处理多个文件pass # 同上def deal_file(self, file): # 创建功能:处理单个文件pass # 同上if __name__ == __name__:demo()

运行一下试试看,yes,框架出来了,不过光秃秃的,没有按钮

(三)加上按钮

def __init__(self):window = tk.Tk()window.geometry('240x160')window.title('Excel文件处理')# 创建一个按钮,按钮放在window窗口上# 按钮上的字是“选择文件”,按下后触发功能“cho_files”函数self.bo_cho = tk.Button(window, text='选择文件', command=self.cho_files)self.bo_deal = tk.Button(window, text='处理文件', command=self.deal_files)# 创建一个标签lable1 = tk.Label(window, text='可在下方输入需要排除的关键词,空格隔开')# 创建一个多行文本框,放在window窗口上self.Text_word = tk.Text(window)# 往多行文本框插入文字“京东 自营 旗舰店 以上”self.Text_word.insert('insert', '京东 自营 旗舰店 以上')# 放置按钮等部件(之前只是创建,没有放置)# pack是一种布局方式,叫“相对布局”。# 还有其他布局方式:place(绝对布局,就是像输入坐标一样布局)# grid(网格布局,把界面分为行行列列来布局)self.bo_cho.pack()self.bo_deal.pack()lable1.pack()self.Text_word.pack()self.file = None # 定义一个变量,来接收单个文件,例:'D:/product/文件1.xls'self.files = None # 来接收多个文件,例:('D:/product/文件1.xls', 'D:/product/文件2.xls')self.file_name = None # 用来接收文件名称,例:‘文件1.xls’self.files_path = None # 用来接收文件的路径,例:‘D:/product/’# dataFrame 为一种数据格式,有行和列# 新建一个表格,表头为“竞争激烈度”等,有两行为“0”的数据self.content = pd.DataFrame({'竞争激烈度': ['0', '0'], '关键词': ['0', '0'], '搜索指数': ['0', '0'], '全网商品数': ['0', '0']})tk.mainloop()

运行一下

好,现在已经有了按钮,我们可以开始写“选择文件”和“处理文件”的功能了!

(四)功能:选择文件

def cho_files(self): # 定义一个选择文件的函数# filedialog.askopenfilenames能打开“选择文件的窗口”# 如果用户选择了“文件1”和“文件2”,那么会返回('D:/product/文件1.xls', 'D:/product/文件2.xls')# 如果用户没有选择文件(点击了取消),那么会返回空字符串''self.files = filedialog.askopenfilenames()# 如果self.files为真,则执行下列代码(空字符串''会被判断为假)if self.files:# 取self.files中的第一个,即'D:/product/文件1.xls'afile = self.files[0]# 把'D:/product/文件1.xls'用 '/' 切分,并选中最后一个元素,即‘文件1.xls’filename = afile.split('/')[-1]# 把 'D:/product/文件1.xls' 中的 ‘文件1.xls’替换成空字符串(效果相当于删掉)# 得到 'D:/product/'self.files_path = afile.replace(filename, '')

(五)功能:处理单个文件

def deal_per_file(self, file):# 提取到文件名‘文件1’name = file.split('/')[-1].split('.')[0]# 根据文件路径,读取文件df = pd.read_excel(file)#下面只是处理我的文件的方式,大家不一定适用#把表格中的 ‘-’ 替换成 0df = df.replace('-', 0)# 把“搜索指数”这一列数据,转换成浮点数类型df['搜索指数'] = df['搜索指数'].astype(float)df['全网商品数'] = df['全网商品数'].astype(float)# 把 '全网商品数'列 除以 '搜索指数'列,并四舍五入到小数点后两位# 如果没有'竞争激烈度'这一列,就新建df['竞争激烈度'] = (df['全网商品数'] / df['搜索指数']).round(decimals=2)# 重新变列的顺序df = df.reindex(columns=['竞争激烈度','关键词', '搜索指数', '全网商品数'])# 根据‘竞争激烈度’这一列的大小排序df = df.sort_values('竞争激烈度', ascending=False)# 对'文本输入框'调用get方法,获得输入的“京东 自营 旗舰店 以上”# 把‘ ’替换成‘|’,得到‘京东|自营|旗舰店|以上’Text_word = self.Text_word.get('1.0', 'end').replace(' ', '|')# 选中‘关键词’中包含Text_word的行Text_word = df['关键词'].str.contains(Text_word)# 反选df = df[~Text_word]# 拼接 self.content 和 df 这两个表格self.content = pd.concat((self.content, df), axis=0, join='outer')# 返回 表格的数据 和 表格的名称return df, name

(六)功能:处理多个文件

def deal_files(self):# self.files_path 即上文定义的 ‘D:/product/’# 创建一个Excel写入器,文件生成在 ‘D:/product/总表.xlsx’writer = pd.ExcelWriter(self.files_path + '总表.xlsx', engine='xlsxwriter')# 把所有文件路径,依次赋值给 self.filefor self.file in self.files:# self.deal_per_file 就是我们上个写的函数# 把单个文件路径传入函数# 返回“表格数据”和“表格内容”df, name = self.deal_per_file(self.file)# 把“表格数据”写入excel文件,并指定写入哪个文件 和 sheet名称df.to_excel(writer, sheet_name=name)#循环处理所有文件# self.content 包含了所有文件的数据# 把 self.content 按'竞争激烈度'的大小排序self.content = self.content.sort_values('竞争激烈度', ascending=False)# 把“表格数据”写入excel文件,并指定写入哪个文件 和 sheet名称self.content.to_excel(writer, sheet_name='总表')# 保存这个excel文件writer.save()# 重置 self.content self.content = pd.DataFrame({'竞争激烈度': ['0', '0'], '关键词': ['0', '0'], '搜索指数': ['0', '0'], '全网商品数': ['0', '0']})# 弹出窗口,窗口标题为“成功”,窗口含有信息“成功生成文件。”messagebox.showinfo(title='成功', message='成功生成文件。')

Yes,鼓掌!!庆贺一下,你已经弄懂“excel处理工具”的原理了。

接下来你可以试着自己把它写出来:先理清需要什么功能,再写出程序框架,最后逐个完善功能。

excel数据.zip
882.7K

·

百度网盘

易语言 取excel表格名称_给新手的python“Excel自动处理工具”教程相关推荐

  1. python处理excel表格入门_零基础使用Python读写处理Excel表格

    引 由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作. 安装库 Python环境 首先当然是配环境,不过选Python的一个重 ...

  2. 易语言取java路径模块_易语言API模块制作进程取程序路径

    易语言API模块制作进程取程序路径,提高进程的PID获取程序的所在路径. 进程_取程序路径 1.CreateToolhelp32Snapshot 快照句柄 = CreateToolhelp32Snap ...

  3. python excel表格处理软件_给新手的python“Excel自动处理工具”教程

    在上面的回答中,我做了两个小工具"Excel自动处理工具"和"商品抓取工具",有小伙伴想看看教程,所以就有了这篇文章. 一."excel处理器&quo ...

  4. JSP设置Excel表格换行_外企大公司的 Excel 表格,都是这样设置隐藏的

    Excel表格中不需要显示的行或列,我们都是隐藏起来,需要时再取消隐藏. 小编接触过很多外企大公司,他们的表格中是这样设置隐藏的: 是不是比隐藏更方便.它是使用了Excel中的组合功能( 数据 - 创 ...

  5. java填充excel表格中_填充导出Java导出excel表格

    近期朋友几篇文章介绍了改填充导出的文章. 关联文章的地址 之前做项目的时候需要数据库导出excel格式,由于项目赶没实现,现在分享下如何用java导出excel.话不多说案例如下: 首先要做的是导入一 ...

  6. 易语言 取excel表格名称_最新最全!1139份Excel版市政统表大全,市政工程全覆盖...

    最新最全!1139份Excel版市政统表大全,市政工程全覆盖 市政工程作为城市生存和发展必不可少的物质基础,提高人民生活水平和对外开放的基本条件,在国民经济中占到了非常重要的地位. 今天小嘉和大家分享 ...

  7. 易语言json置入_易语言取置JSON文本使用方法-易语言学习-猴子技术宅

    什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON到底是什么? JSON就是一串字符串 只 ...

  8. e语言mysql怎么放在超级列表框,『易语言怎么将超级列表框的内容保存到excel或者Access!』...

    易语言把编辑框里的内容保存到Excel里 个人建议: 1.建议选据库成你要的修改.添加.查作 2.添加一个列表框,可以轻松直观的处理数据 3.如果有使用Excel的需求,那就弄一个导出按键 这样才能是 ...

  9. 易语言取linux命令返回值,易语言取程序返回值写法

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:易语言取程序返回值写法回答:在易语言中,程序包括"处理程序"都有六部分组成.一.程序名,就是程序的名称,程序名不 ...

最新文章

  1. 重庆市计算机二级考试大纲,重庆市二级计算机考试大纲.doc
  2. UOJ351 新年的叶子
  3. (10位数和13位数的)时间戳 - 代码篇
  4. C语言之typedef定义函数指针(十三)
  5. 牛逼!Java 从入门到精通,超全汇总版
  6. NXP RT1062 flashloader下载程序到RAM执行
  7. matlab 数字和字符串转换
  8. 【朝花夕拾】Android自定义View篇之(十)移动阈值TouchSlop及滑动追踪VelocityTracker...
  9. 计算机最大数最小数的函数,Excel函数教程: 求最大、最小、中间数、最多数-excel技巧-电脑技巧收藏家...
  10. 手把手教你使用R语言做出SCI论文中的表二(单因素分析表)(3)
  11. 使用pyqt5的日期控件做一个小日历方便查看
  12. 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词
  13. vue吸管拾色器、利用canvas获取坐标点颜色、canvas获取坐标点颜色图片跨域、图片转base64、colorPicker
  14. 如何预估一个产品的DAU? 这个方法又简单又实用 | 附Excel实操模板
  15. An attempt was made to call a method that does not exist. The attempt was ma
  16. php获取今日、昨日、本周、本月 日期方法
  17. VNC Timed out waiting for a response from the computer
  18. 电脑知识:常见电脑蓝屏代码识别与处理方法
  19. 结合实际聊聊防反接电路(防反接电路总结)
  20. 新品速看丨创新微MinewSemi正式推出GNSS高精度卫星定位导航模块

热门文章

  1. 学生信息登记表怎么做html,CSS写的简单个人信息登记表格示例
  2. Android HVGA,QVGA等的英文全拼简介
  3. 让我们,从头到尾,通透网络I/O模型
  4. 【Guacamole中文文档】二、用户指南 —— 5.配置Guacamole
  5. SpringBoot整合Mybatis-Pius(简单易懂!)
  6. 数据库课设—图书馆借阅系统
  7. 面试中常被问到(11)虚函数/纯虚函数
  8. 被业界追捧的3D传感技术 奥比中光比拼苹果结果出人意料
  9. 使用dijkstra求解最小费用最大流网络
  10. qt中drawline函数的参数_在Qt GraphicsView中创建长线(或十字线)光标的最佳方法...