记录下之前用python3 写的一个处理Excel表格数据筛选脚本用到的一些方法。

本文内容比较杂,可按需跳转翻看。

pandas是一个内容十分丰富的库,我也只不过用到其中处理excel的方法,对这个库感兴趣的可以直接翻阅pandas官方文档,对处理excel方法部分感兴趣的可以点击这里

目录

  • pandas安装
  • 图形化收集文件夹和文件名
  • 自动创建文件夹
  • pandas读取Excel表格
  • pandas筛选Excel表格数据
  • pandas生成新数据表
  • 结尾

pandas安装

本文所用Python环境为3.9,操作系统为Windows 10

安装pandas库

pip install pandas

本文安装完pandas库后还需安装依赖库openpyxl

pip install openpyxl

图形化收集文件夹和文件名

脚本的初衷是批量化处理数据,收集文件信息必不可少,减少文本输入是编写脚本的一个初衷,所以选择图形化界面收集文件信息

Python3 内置提供了图形化界面库tk和文件操作库os,直接导入所用到库

import pandas as pd
import os
from tkinter import *
import tkinter.filedialog

Tk()创建图形化窗口收集文件夹路径,os.listdir()收集路径下子文件名生成列表

root = Tk()  # 创建图形化窗口
path = tkinter.filedialog.askdirectory()  # 选择文件夹
list_filename = os.listdir(path)

也可直接收集单个文件名信息

file = tkinter.filedialog.askopenfilename()  # 选择一个文件,收集到文件绝对路径
path, filename = os.path.split(file)[0], os.path.split(file)[1]  # path为路径,filename为文件名

自动创建文件夹

需要对数据进行分类导出,自动创建文件夹进行分类

创建一个列表,使用os库进行文件夹创建,此处按地市来创建,将新创建的文件夹放置于原文件夹下

city = ['北海', '崇左', '防城港', '贵港', '桂林', '河池', '贺州', '来宾', '柳州', '南宁', '钦州', '梧州', '玉林', '百色']for i in city:path_new = path + '/分类/' + iexists = os.path.exists(path_new)if not exists:  # 如果未创建目录os.makedirs(path_new)print(f'目录{path_new}已创建')

pandas读取Excel表格

将之前收集到的文件信息重新构建成绝对路径以便读取,同时使用endswith()判断文件名后缀为.xlsx,使用pandas的read_excel()进行读取

for n in list_filename:filename = path + '/' + nif filename.endswith('.xlsx'):ws = pd.read_excel(filename, sheet_name=0, keep_default_na=False)

其中sheet_name=可用表名或者数字,0代表第一个表,1代表第二个表,'sheet1’代表读取sheet1表,以此推类;keep_default_na=False表示读取到空单元格时不使用NaN代替。除此外还有其他参数,请参考pandas文档

以此方式读取表格会产生columns列标签和index行索引,如图:

pandas筛选Excel表格数据

本文筛选条件为按列筛选地市数据并分类,使用str.contains()方法进行筛选

for i in city:md = ws.loc[ws['所属地市'].str.contains(i, na=False, regex=True)]

此处na=False为遇单元格为空时不填充NaN;loc[ ]通过标签或布尔数组访问一组行和列。

contains()方法筛选较为宽松,填充内容默认为正则表达式,即regex=True,当regex=False则以字符串来进行筛选。

如下图:

所属地市:南宁 筛选出结果:

所属地市:南宁或桂林 筛选出结果:

以字符串筛选:

所属地市:除去南宁或桂林 筛选出结果:

也可换成在后面 == False,效果相同

当需要更严格筛选时,可使用str.fullmatch()

fullmatch()仅当字符串完全匹配时为真

当多重列筛选时,可以先全部收集,再使用 drop_duplicates() 进行自动去重

注意! 筛选的数据一般需要使用loc[ ] 来进行整行数据摘取

pandas生成新数据表

筛选完数据后,需要生成新数据表,本文使用 to_excel()来生成

to_excel() 指向地址若已存在同名数据表,将会对该数据表进行内容覆盖,使用时需注意

此处index=False 为不额外生成行索引,否则会在每行数据前多加一个数字索引

除此外,若没有筛选到数据,to_excel()也会生成新数据表,但仅存在列标签,若想筛选无结果不建立新表,仅需判断有无行索引

if len(wd.index.values):wd.to_excel(path + new_filename, index=False)print(path + new_filename + " OK")
else:print("筛选数据为空 不创建表")

结尾

文章到这里就结束了,想了解更多pandas用法可前往pandas官方翻看pandas十分钟上手教程

如对代码如果有什么疑问可以评论或私信,觉得有用的话还可以关注收藏一手 - ’ v ’ - 十分感谢。


循循而进,一往无前。

Python3 编写处理Excel表格数据筛选脚本用到的一些方法相关推荐

  1. Java中Excel表格数据的导入和导出步骤和方法

    Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表.读取Excel数据表的第一步是创建Workbook(术 语:工作薄),下面的代码片段举例说 ...

  2. python3读取excel数据-Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python ...

  3. 如何利用python将excel表格中筛选出来的每一份数据各自另存为新的excel文件?

    如何利用python将excel表格中筛选出来的每一份数据各自另存为新的excel文件? 1.问题描述 2.解决过程 2.1 问题分析: 2.2 解决思路 3.运行结果 1.问题描述 最近在处理一堆工 ...

  4. Python3读取和写入excel表格数据

    目录 一.python读取excel表格数据 1.读取excel表格数据常用操作 2.xlrd模块的主要操作 3.读取单元格内容为日期时间的方式 4. 读取合并单元格的数据 二.python写入exc ...

  5. python3 写入excel表格数据_Python3读取和写入excel表格数据

    目录 python操作excel主要用到 xlrd和xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.pytho ...

  6. python导入excel表格-Python 将Excel表格数据导入MySQL数据库

    今天分享一个刚刚完成的Python脚本,一个实用的小技能,就是利用Python代码,将EXCEL表格数据导入到MySQL数据库中!话不多说,下面代码示例. Excel表格数据.jpg 1示例代码: i ...

  7. Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls:文件内包含站点编号.X与Y坐标.站点名称等四列数据 ...

  8. Python|excel表格数据一键转json格式小工具|支持xlsx、xls格式转json|【源码+解析】

    背景    最近在使用JavaScript编写一些浏览器RPA脚本,脚本使用过程中遇到一些问题,脚本使用的数据往往存放在excel表,但运行时只能读取json数据,导致频繁人工excel转json,效 ...

  9. 【Unity】安装配置Python使用protobuf转换Excel表格数据并在unit中使用

    前言: 之前使用NPOI插件编写的导表工具,其实就是直接将数据进行序列化,解析时还需要进行反序列化,步骤比较繁复,最近看到Google的一个开源的项目protobuf,不仅可以用于进行excel表格数 ...

最新文章

  1. C++ 类的静态成员详细讲解
  2. 达摩院2022年十大科技趋势发布:AI for Science刚开始,大模型进入冷静期
  3. software on macbook pro
  4. mysql在计算机管理中的路径怎么修改_Rstudio中修改工作路径的三种方法
  5. CNN分类,ResNet V1 ,ResNet V2,ResNeXt,DenseNet
  6. TensorFlow2.0(七)--基础API使用
  7. Android开发中的SQLite事务处理,即beginTransaction()方法
  8. 生成SQL SERVER数据库脚本
  9. 如何设置vs2005的环境变量
  10. 【自动驾驶】PurePursuit实现轨迹跟踪
  11. 移位运算(无符号移位运算,有符号移位运算)
  12. Android 系统广播(大全)
  13. distrowatch(distrowatch什么意思)
  14. cadence 批量一次性修改title 页码标题等
  15. 数据,模型,算法共同决定深度学习模型效果
  16. java 删除重复文件
  17. jenkins使用python脚本发送企业微信通知
  18. 【备忘】Java从零到精通学习路线培训教程
  19. bzoj 4398 福慧双修——二进制分组
  20. CTC Loss (一)

热门文章

  1. 卸载 npm 软件包
  2. telegram自动发信息_创建telegram 机器人 并发送消息
  3. 华为OD机试 - 完美走位(Python)
  4. 用函数在Excel中从文本字符串提取数字
  5. mt,sgd,gd含义
  6. 使用3D Max里面自带的门,怎么设置动画并预览
  7. android 啦窗帘的动画,android 下拉窗帘效果
  8. 手机通过IP访问电脑(端口、网站),手机以及电脑IP查看,防火墙开放指定端口设置。
  9. python爬虫获取携程旅游景点评分和评论
  10. 利用UltraISO刻录光盘启动盘