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

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

(一)理清工作流程

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

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

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

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

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

(二)自动化思路

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

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

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

二、教程

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

(一)传统艺能:引用库

import pandas as pd # 数据处理库

import numpy as np # 数据处理库

import tkinter as tk # 图形界面库

from tkinter import filedialog # 图形界面库的文件对话框模块

from tkinter import messagebox # 图形界面库的弹窗模块

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

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

#定义一个类

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)

#下面只是处理我的文件的方式,大家不一定适用

#把表格中的 ‘-’ 替换成 0

df = 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.file

for 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 ·

百度网盘

python excel表格处理软件_给新手的python“Excel自动处理工具”教程相关推荐

  1. 怎么把多个excel表格合成一个_快速将多个Excel表格合并为1个,你会吗?

    我:"老板,这是我整理了好久今年的财务报表" "这是1月分的 ,这是2月份的,这是3月份的--一共12张表"(自己很辛苦的整理,以为会得到表扬) 结果! 老板: ...

  2. 使用python 处理表格生成图表_教你用Python自动读取数据生成图表,产生的效益很可观...

    厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图 ...

  3. python做的项目管理软件_幽雅的使用Python之软件管理

    优雅的使用Python之软件管理 上篇<>,如何管理python环境,有了一个干净的python环境之后,就不可避免的安装python软件包(python软件包丰富也是它的优点之一,不用重 ...

  4. python实现p图软件_这才是Python程序员P图的正确打开方式!

    [IT168 评论]现代社会,不P图的人简直就像是恐龙一样稀奇,大到瘦脸瘦腿瘦全身,小到滤镜大眼高鼻梁,五花八门的手段令人应接不暇.那么程序员作为这个星球的特殊物种,P图才不会用毁图秀秀这种软件,下面 ...

  5. 办公软件excel表格_190个施工方案+40个电力计算Excel表格、软件大合集

    190个施工方案+40个电力计算Excel表格.软件大合集! 现在的工程人真的是变身超人,施工方案不能出错,计算要快,BIM技术.CAD软件也要会,如果没有这些可直接套用的施工方案和自动计算表格,我想 ...

  6. excel在线_Excel表格办公软件大师课app下载-Excel表格办公软件大师课手机版 v1.0.3...

    Excel表格办公软件大师课app是一款表格处理学习软件,带来丰富的Excel表格处理课程资源,让零基础的小白用户也能在线学习Excel表格处理,掌握在手机中处理Excel表格技巧,在办公的时候有效提 ...

  7. 国产AI软件,10年前已出现,Excel表格变软件,用友用户:有救了

    10年前,国产AI软件已经出现 在国内,我们早在10年就已经有AI软件,而且现在还在使用. 10年前,这款软件跟现在市面上流行的ChatGPT和文心一言相比,最为先进的是:不根本用写代码,只要会画表格 ...

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

    学 Python 都用来干嘛的? - 海燕的回答 - 知乎 在上面的回答中,我做了两个小工具"Excel自动处理工具"和"商品抓取工具",有小伙伴想看看教程,所 ...

  9. lisp对excel其他行列写入_【极简Python 自动化办公】Python写入Excel表格

    [极简Python 自动化办公]Python写入Excel表格 [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. ...

最新文章

  1. 最大流学习笔记(1)
  2. 大数据架构如何做到流批一体?【对于Flink等流批一体的概念做了很好的澄清!】
  3. windows常用命令集锦
  4. html表格td点击事件,监听layui中的table中的td点击事件
  5. 【开发随笔】以强化学习环境 gym 库为例:为什么日常中我应该试图标准化接口?
  6. C语言编写——四则运算小游戏
  7. chrome插件开发详解
  8. 爬虫框架 Scrapy 详解
  9. 菜鸟驿站是什么快递_菜鸟驿站是什么快递(菜鸟驿站和快递点的区别)
  10. 使用 travis + gitbook + github pages 优雅地发布自己的书
  11. 【无机纳米材料科研制图——Photoshop 0404】PS排列扫描透射电子显微镜图TEM/STEM
  12. 单盘黑群晖更换硬盘实操记录
  13. prometheus监控服务器基本信息+华为交换机设备
  14. 弱口令扫描、暴力破解密码
  15. 大话操作系统(11)进程间通信
  16. 浅谈Nginx转发匹配规则
  17. 未来中国智能制造九大趋势
  18. 土木工程结构力学————虚功原理
  19. Summary of the monthly meeting in January and February
  20. 一、CentOS7启动U盘制作

热门文章

  1. 关于场景烘培以及灯光使用的基础文章
  2. 02年六代雅阁的整备质量_雅阁8个月销12万台,兄弟英诗派不到3万台,为何差距这么大?...
  3. evernote android版本,Evernote Android 版更新,给您超便捷笔记入口
  4. 【CSS实战】实现正方体
  5. 分组聚合显示全部列_Power BI经典技巧:动态显示数据层级
  6. hp dl580 g7安装linux,如何在HP Proliant DL380 G7上安装Ubuntu 16.04 LTS
  7. Java线程详解(深度好文)
  8. spring cloud 建一个服务消费者client-ribbon
  9. 我用心收藏的精典网站Ruby,HIBERNATE相关 推荐收藏
  10. elementui实现级联