使用Python批量处理Excel文件并转为csv文件示例

 更新时间:2023年12月13日 11:56:41   作者:艾派森  
这篇文章主要介绍了使用Python批量处理Excel文件并转为csv文件示例,文中通过代码示例给大家介绍非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

Python客栈送红包、纸质书

前言

今天一位正在国企实习的朋友突然私信找到我,说领导派了个离谱的活,大概就是需要将一个大文件夹里面的excel文件进行简单处理后再转为csv格式的文件,然后这个大文件里面有五个二级文件夹,这五个二级文件夹里面都有一个三级文件夹,然后每个三级文件夹里面都有14-18个四级文件夹,每个四级文件夹里面有31个excel文件和极少量csv文件夹。听起来层级是不是特别饶,而且加起来总共有2000多个excel文件。处理的话是将表格中的时间列格式进行转换,最后存储为csv文件。这要是人工一个一个文件弄,这得累死人,这种重复的工作当然是交给脚本啦!

一、Python处理Excel

  • Python处理Excel的好处

1.批量操作:当要处理众多Excel文件时,例如出现重复性的手工劳动,那么使用Python就可以实现批量扫描文件、自动化进行处理,利用代码代替手工重复劳动,实现自动化,是Python第一个比Excel强大的地方

2.大型文件,当Excel文件超过几十兆、甚至上百兆时,打开文件很慢、处理文件更加慢,这时候若使用Python,会发现处理几十兆、几百兆甚至几GB都是没有问题的

3.当使用Excel进行复杂的计算时,会使用VBA,但是VBA本身是过时并且复杂的语言,Python是当前最简单且容易实现的一门语言,用Python能够处理比VBA难度更高的业务逻辑

4.Python是通用语言,不仅可以处理Excel,使用Python就可以得到很多额外的功能,例如:爬虫、发布网页的Web服务、与数据库进行连接、同时结合word和PPT进行处理、加入定时任务处理、人工智能分析等,各种额外的功能,这是Excel和VBA所不具备的

  • Python处理Excel主要有三大类库

1.pandas:是Python领域非常重要的,用于数据分析和可视化的类库,在处理Excel中,90%可以利用pandas类库就可以搞掂,利用pandas就可以读取Excel、处理Excel和输出Excel,但是pandas也有缺点,就是无法做到格式类,例如Excel中合并单元、大量复杂的样式(看起来很精美)的时候,用pandas无法搞掂,此时,依然是使用pandas结合openyxl、xlwings来搞掂需求

2.openpyxl:若电脑上未安装office时,也可以使用openpyxl,这个类型可以运行在linux上,并且也可以实现操作大部分Excel格式和样式的功能,使用它配合pandas,也可以完成大部分场景的需求

3.xlwings:比openyxl更加强大,只能运行在Windows或者Mac系统,并且该系统中必须安装了office才能运行,xlwings的原理,就是基于当前系统已经安装好的office软件,来进行功能的拓展来操作Excel

  • 使用pandas的时候,经常会结合其他类库,来完成更加复杂的功能

    • requests, bs4:可以完成爬虫的功能

    • flask:可以做网页,把表格展示在网页上

    • Matplotlib:读取表格后,进行可视化

    • sklearn:进行复杂的数据分析时,也可以结合机器学习Sklearn把读取的Excel数据,进行数据分析和机器学习

    • Python-docx:也可以结合Python-docx类库,实现Excel和word的互通

    • smtplib:也可以使用smtplib,讲Excel数据发送邮件出去

  • 开发环境

操作系统:使用windows, mac都可以

Python版本:系统中需要安装Python3.6以上的版本,Python2已经过期不建议使用,Python3.6以前的版本功能相对弱,最好就是采用Python3.6以上的版本

开发工具:有两个可以选择,jupyter notebook,是个网页编辑器,可以运行Python,常常用于交互性、探索性的开发;pycharm,用于成熟脚本,或者web服务的一些开发;这两个工具可以随意选择。

二、批量处理Excel文件并转为csv文件

技术工具:

Python版本:3.9

代码编辑器:jupyter notebook

处理思路

写代码之前我们首先需要针对这个需求在脑子里做出一个流程图出来,大概就是使用os库层层遍历文件夹,当遍历到excel文件这一级路径时,我们使用pandas读取excel文件,将time时间列转为时间序列类型并符合要求格式,接着使用pandas将处理后的文件保存为csv文件并输出在同一路径下,最后再将原始excel文件进行删除即可。

处理过程

首先看一下文件夹路径结构

然后我写的脚本与sample_data在同一级

具体脚本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas as pd
import os
from datetime import datetime
# 基础文件夹路径
base_dir = './sample_data'
  
# 循环遍历到每一个excel文件并修改其文件类型为csv
for first_floor in os.listdir(base_dir):  # 遍历第一层
    second_floor_dir = base_dir+'/'+first_floor  # 获取第二层的文件路径
    for second_floor in os.listdir(second_floor_dir):  # 遍历第二层
        third_floor_dir = base_dir+'/'+first_floor+'/'+second_floor  # 获取第三层的文件路径
        for third_floor in os.listdir(third_floor_dir):  # 遍历第三层
            fourth_floor_dir = base_dir+'/'+first_floor+'/'+second_floor+'/'+third_floor  # 获取第四层的文件路径
            for file_dir in os.listdir(fourth_floor_dir):  # 遍历第四层
                file_name = file_dir.split('.')[0# 获取excel文件名称
                file_suffix = file_dir.split('.')[1# 获取excel文件后缀
                print(fourth_floor_dir)
                if file_suffix=='xlsx' or file_suffix=='xls': # 判断文件是否是excel文件
                    df = pd.read_excel(fourth_floor_dir+'/'+file_dir)  # 读取excel文件
                    df['Time'] = pd.to_datetime(df['Time'])
                    df['Time'] = df['Time'].apply(lambda x:datetime.strftime(x,'%Y-%m-%d %H:%M:%S'))
                    df.to_csv(fourth_floor_dir+'/'+file_name+'.csv',index=False# 将excel文件保存为csv文件
                    os.remove(fourth_floor_dir+'/'+file_dir)  # 删除原来的excel文件

首先定义基础文件夹路径,接着使用os.listdir()获取文件夹列表,嵌套四层循环即可到达excel文件的路径下,然后使用字符串切割获取文件名和后缀,判断后缀是否为excel文件,是的话就使用pandas读取数据,然后转换列类型并转为要求格式,最后保存为csv文件并删除原来excel文件。运行之后就大功告成啦!

最后还得到了朋友的肯定,其实学Python并不一定要去做程序员,像这种办公软件(excel、PPT、word)在公司里都是必备技能,但是当要处理的文件太多或者都是一些重复性的工作,那此时你用Python写个自动化脚本来做,省时又省力,提高工作效率,同时还能获得领导的欣赏。

以上就是使用Python批量处理Excel文件并转为csv文件示例的详细内容,更多关于Python处理Excel并转为csv的资料请关注脚本之家其它相关文章!

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/m0_64336780/article/details/132174345

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • Python2和Python3中urllib库中urlencode的使用注意事项

    Python2和Python3中urllib库中urlencode的使用注意事项

    这篇文章主要介绍了Python2和Python3中urllib库中urlencode的使用注意事项,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • Flask 的路由Route详情

    Flask 的路由Route详情

    在上一篇Flask 入门Web 微框架Hello Flask中,我们用 Flask 框架写了一个 Hello Flask 应用程序,我们了解到 Flask 框架简洁高效、可以快速上手,接下来将对 Flask 框架的各项功能详细的介绍一下,本篇文章介绍的是 Flask 的路由(Route),需要的朋友可以参考一下
    2021-11-11
  • 如何基于python实现脚本加密

    如何基于python实现脚本加密

    这篇文章主要介绍了如何基于python实现脚本加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python中利用sorted()函数排序的简单教程

    Python中利用sorted()函数排序的简单教程

    这篇文章主要介绍了Python中利用sorted()函数排序的简单教程,sorted()函数有返回值,在Python的排序实现中发挥着相当重要的作用,需要的朋友可以参考下
    2015-04-04
  • Python实现压缩和解压缩ZIP文件的方法分析

    Python实现压缩和解压缩ZIP文件的方法分析

    这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下
    2017-09-09
  • Python编程中Python与GIL互斥锁关系作用分析

    Python编程中Python与GIL互斥锁关系作用分析

    GIL互斥锁用来保护Python世界里的对象,防止同一时刻多个线程执行Python字节码,确保线程安全,但也导致Python线程无法利用多核CPU优势,本文来探讨Python将来是否有可能去除GIL
    2021-09-09
  • 浅谈Python中的可变对象和不可变对象

    浅谈Python中的可变对象和不可变对象

    下面小编就为大家带来一篇浅谈Python中的可变对象和不可变对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • python Pygame的具体使用讲解

    python Pygame的具体使用讲解

    本篇文章主要介绍了python Pygame的具体使用讲解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python 关于模块和加载模块的实现

    Python 关于模块和加载模块的实现

    这篇文章主要介绍了Python 关于模块和加载模块的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Linux下Python安装完成后使用pip命令的详细教程

    Linux下Python安装完成后使用pip命令的详细教程

    这篇文章主要介绍了Linux下Python安装完成后使用pip命令的详细教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11

最新评论