人生苦短我用Python excel转csv
人生苦短我用Python excel转csv
- 前言
- 准备工作
- pandas库
- 主要类和方法
- ExcelFile 类
- DataFrame 类
- read_excel 函数
- to_csv 函数
- 示例
前言
Excel
文件和csv
文件都是常用的电子表格文件格式,其中csv
格式更便于用于数据交换和处理。本文使用pandas
库将Excel
文件转化为csv
文件。
准备工作
pip install pandas
pip install openpyxl
pandas库
-
csv
库是Python
标准库的一部分,提供了基本的csv
文件读写功能。它不能直接支持读取Excel
文件。 -
要读取
Excel
文件,通常需要使用pandas
库。以下是来自官网的介绍:
pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool,
built on top of the Python programming language.
- 在读取不同文件格式所需要的
engine
。 openpyxl
是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的Python
库。支持通过Python
代码创建、修改和读取Excel
文件,而无需依赖于 Microsoft Excel 应用程序。
"""
engine : {{'openpyxl', 'calamine', 'odf', 'pyxlsb', 'xlrd'}}, default NoneIf io is not a buffer or path, this must be set to identify io.Engine compatibility :- ``openpyxl`` supports newer Excel file formats.- ``calamine`` supports Excel (.xls, .xlsx, .xlsm, .xlsb)and OpenDocument (.ods) file formats.- ``odf`` supports OpenDocument file formats (.odf, .ods, .odt).- ``pyxlsb`` supports Binary Excel files.- ``xlrd`` supports old-style Excel files (.xls).When ``engine=None``, the following logic will be used to determine the engine:- If ``path_or_buffer`` is an OpenDocument format (.odf, .ods, .odt),then `odf <https://pypi.org/project/odfpy/>`_ will be used.- Otherwise if ``path_or_buffer`` is an xls format, ``xlrd`` will be used.- Otherwise if ``path_or_buffer`` is in xlsb format, ``pyxlsb`` will be used.- Otherwise ``openpyxl`` will be used.
"""
主要类和方法
pandas
库中ExcelFile
类主要用于读取Excel
文件,DataFrame
类用于表示和操作数据。
ExcelFile 类
ExcelFile
类用于处理Excel
文件,封装了解析和读取Excel
文件的操作。- 支持查看
Excel
文件中的工作表名称,并读取特定的工作表。 - 支持读取
Excel
文件中的多个工作表,并将每个工作表转换为一个DataFrame
对象。
class ExcelFile:def __init__(self,path_or_buffer,engine: str | None = None,storage_options: StorageOptions | None = None,engine_kwargs: dict | None = None,) -> None:@propertydef sheet_names(self):return self._reader.sheet_names
DataFrame 类
DataFrame
类用于表示二维的、大小可变、潜在异构的表格数据。- 可以包含多种数据类型的列,如整数、浮点数、字符串等。
- 可以进行各种数据操作,如选择、过滤、修改、合并、分组、排序等。
read_excel 函数
pandas
库read_excel
函数,用于从 Excel 文件中读取数据并将其转换为DataFrame
对象。- 支持多种参数来处理不同的 Excel 文件格式和内容。
def read_excel(io,sheet_name: str | int | list[IntStrT] | None = 0,*,header: int | Sequence[int] | None = 0,names: SequenceNotStr[Hashable] | range | None = None,index_col: int | str | Sequence[int] | None = None,usecols: int| str| Sequence[int]| Sequence[str]| Callable[[str], bool]| None = None,dtype: DtypeArg | None = None,engine: Literal["xlrd", "openpyxl", "odf", "pyxlsb", "calamine"] | None = None,converters: dict[str, Callable] | dict[int, Callable] | None = None,true_values: Iterable[Hashable] | None = None,false_values: Iterable[Hashable] | None = None,skiprows: Sequence[int] | int | Callable[[int], object] | None = None,nrows: int | None = None,na_values=None,keep_default_na: bool = True,na_filter: bool = True,verbose: bool = False,parse_dates: list | dict | bool = False,date_parser: Callable | lib.NoDefault = lib.no_default,date_format: dict[Hashable, str] | str | None = None,thousands: str | None = None,decimal: str = ".",comment: str | None = None,skipfooter: int = 0,storage_options: StorageOptions | None = None,dtype_backend: DtypeBackend | lib.NoDefault = lib.no_default,engine_kwargs: dict | None = None,
) -> DataFrame | dict[IntStrT, DataFrame]:
- 常用参数
参数 | 说明 | 默认值 |
---|---|---|
io | Excel 文件的路径或文件对象 | |
sheet_name | 要读取的工作表名称或索引。 可以是字符串(工作表名称)、整数(工作表索引)、列表(多个工作表)或 None (所有工作表) | 默认为 0 (第一个工作表) |
header | 指定哪一行作为列名 | 默认为 0 (第一行) |
index_col | 指定哪一列作为行索引。可以是整数或列名 | |
usecols | 指定要读取的列。可以是列索引、列名或列范围。 | |
dtype | 指定列的数据类型。可以是字典,键为列名,值为数据类型。 | |
skiprows | 跳过文件开头的一些行。可以是整数或列表。 | |
nrows | 要读取的行数。 |
to_csv 函数
DataFrame
对象提供了一个非常方便的方法to_csv
,用于将DataFrame
中的数据写入 CSV 文件。
def to_csv(self,path_or_buf: FilePath | WriteBuffer[bytes] | WriteBuffer[str] | None = None,sep: str = ",",na_rep: str = "",float_format: str | Callable | None = None,columns: Sequence[Hashable] | None = None,header: bool_t | list[str] = True,index: bool_t = True,index_label: IndexLabel | None = None,mode: str = "w",encoding: str | None = None,compression: CompressionOptions = "infer",quoting: int | None = None,quotechar: str = '"',lineterminator: str | None = None,chunksize: int | None = None,date_format: str | None = None,doublequote: bool_t = True,escapechar: str | None = None,decimal: str = ".",errors: OpenFileErrors = "strict",storage_options: StorageOptions | None = None,) -> str | None:
- 常用参数
参数 | 说明 | 默认值 |
---|---|---|
path_or_buf | 输出文件的路径或文件对象。 如果为 None ,则返回 CSV 字符串。 | None |
sep | 分隔符 | 默认为逗号 , |
index | 是否写入行索引 | 默认为 True |
header | 是否写入列名 | 默认为 True |
columns | 指定要写入的列 | 默认为所有列 |
encoding | 指定编码格式 | 默认为 utf-8 |
示例
实现很简单:
- 使用
pandas
库读取Excel
文件; - 读取工作表并将其转换为
DataFrame
对象; - 将
DataFrame
写入csv
文件。
import osimport pandas as pddef export_csv(input_file, output_path):# 创建ExcelFile对象with pd.ExcelFile(input_file) as xls:# 获取工作表名称列表for i, sheet_name in enumerate(xls.sheet_names):# 读取工作表并转换为DataFramedf = pd.read_excel(xls, sheet_name=sheet_name)output_file = os.path.join(output_path, f'{i + 1}-{sheet_name}.csv')# 将DataFrame中的数据写入CSV文件。df.to_csv(output_file, index=False)
相关文章:

人生苦短我用Python excel转csv
人生苦短我用Python excel转csv 前言准备工作pandas库主要类和方法ExcelFile 类DataFrame 类read_excel 函数to_csv 函数 示例 前言 Excel 文件和csv文件都是常用的电子表格文件格式,其中csv格式更便于用于数据交换和处理。本文使用pandas库将Excel文件转化为csv文…...

Web2和Web3笔记
KimiAI: Web2和Web3是互联网发展的不同阶段,它们代表了不同的技术、理念和用户交互方式。 Web2: Web2通常指的是第二代互联网,它始于2000年代中期,以用户生成内容和社交网络的兴起为标志。 在Web2中,用户不仅是内容的消…...

单元测试 Mock不Mock?
文章目录 前言单元测试没必要?Mock不Mock?什么是Mock?Mock的意义何在? 如何Mock?应该Mock什么?Mock 编写示例 总结 前言 前段时间,我们团队就单元测试是否采用 Mock 进行了一番交流,各有各的说法。本文就单元测试 Mock不Mock…...

常用排序算法(上)
目录 前言: 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 堆排序 2.1 1 向下调整算法 2.1 2 建堆 2.1 3 排序 2.2 插入排序 2.1.1基本思想: 2.1.2直接插入排序: 2.1.3 插…...

【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十六)
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

小程序的页面跳转方式
102. 小程序的页面跳转方式 小程序是一种快速发展的应用形式,为用户提供了便捷的功能和交互体验。其中,页面跳转是小程序中常用的功能之一,本文将介绍小程序的页面跳转方式,并提供代码示例,帮助读者更好地理解和实现页…...

第 21 章 DOM 操作表格及样式
第 21 章 DOM 操作表格及样式 1.操作表格 2.操作样式 DOM 在操作生成 HTML 上,还是比较简明的。不过,由于浏览器总是存在兼容和陷阱,导致最终的操作就不是那么简单方便了。本章主要了解一下 DOM 操作表格和样式的一些知识。 一࿰…...

vc-align源码分析 -- ant-design-vue系列
vc-align源码分析 源码地址:https://github.com/vueComponent/ant-design-vue/tree/main/components/vc-align 1 基础代码 1.1 名词约定 需要对齐的节点叫source,对齐的目标叫target。 1.2 props 提供了两个参数: align:对…...

计算机网络(四) —— 简单Tcp网络程序
目录 一,服务器初始化 1.0 部分文件代码 1.1 关于Tcp协议 1.2 创建和绑定套接字 1.3 监听 二,服务器启动 2.1 获取连接 2.2 提供服务 2.3 客户端启动源文件 Main.cc 二,客户端编写 2.1 关于Tcp客户端 2.2 客户端代码 2.3 效果…...

简单的Linux Ftp服务搭建
简单的Linux FTP服务搭建 1.需求 公司有一个esb文件传输代理,其中我们程序有文件传输功能,需要将本地文件传输到esb文件代理服务器上,传输成功之后发送http请求,告知esb将固定文件进行传输到对应外围其他服务的文件目录中&#…...

SQL的高级查询练习知识点(day24)
目录 1 学习目标 2 基础查询 2.1 语法 2.2 例子 3 条件查询 3.1 含义 3.2 语法 3.3 条件表达式 3.3.1 条件运算符 3.3.2 例子 3.4 逻辑表达式 3.4.1 逻辑运算符 3.4.2 例子 3.5 模糊查询 3.5.1 概述 3.5.2 例子 4 DISTINCT关键字 4.1 含义 4.2 例子 5 总结…...

Python条件表达式优化的10个实例
Python 中的条件表达式(也称为三元运算符)是一种简洁的语法,用于在单个表达式中执行 if-else 逻辑。虽然它们本身并不直接“优化”代码的执行速度,但它们可以使代码更加简洁、易读,并且有助于避免不必要的嵌套或复杂的…...

oatpp apiclient 客户端get,post请求python fastapi demo
最新用fastapi搞了个服务端,python功能太强了,就是环境不好弄,弄好后,不要轻易换python版本,不要装多个python版本 前面搞了个oatpp webapi服务端,现在要用客户端,为什么用opatpp客户端,因为他不再带其他库了 demo: 我的请求比较简单,就是向python 的 fastapi服务端…...

RK3568平台(内存篇)EMMC介绍
一.eMMC是什么 eMMC (Embedded Multi Media Card)是MMC协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备及主控制器。所有都在一个小型的BGA 封装。接口速度高达每秒52MBytes,eMMC具…...

Python批量读取身份证信息录入系统和重命名
前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。…...

IBM Storwize V7000存储控制器故障节点报错574
背景:由于客户机房搬迁,需要下电迁移设备。该存储自2016年投入生产使用后,从未关过机,已正常运行七八年时间,期间只更换过硬盘,无其他硬件故障。 在GUI界面点击关闭系统后,大概等了40分钟&…...

通信工程学习:什么是SSB单边带调制、VSB残留边带调制、DSB抑制载波双边带调制
SSB单边带调制、VSB残留边带调制、DSB抑制载波双边带调制 SSB单边带调制、VSB残留边带调制、DSB抑制载波双边带调制是三种不同的调制方式,它们在通信系统中各有其独特的应用和特点。以下是对这三种调制方式的详细解释: 一、SSB单边带调制 1、SSB单边带…...

MapSet之二叉搜索树
系列文章: 1. 先导片--Map&Set之二叉搜索树 2. Map&Set之相关概念 目录 前言 1.二叉搜索树 1.1 定义 1.2 操作-查找 1.3 操作-新增 1.4 操作-删除(难点) 1.5 总体实现代码 1.6 性能分析 前言 TreeMap 和 TreeSet 是 Java 中基于搜索树实现的 M…...

OpenCV图像分割教程
OpenCV 图像分割教程 OpenCV 是一个非常强大的计算机视觉库,支持各种图像处理任务。图像分割是 OpenCV 支持的一个重要功能,它用于将图像划分为不同的区域,识别感兴趣的部分。我们将通过介绍 OpenCV 中的图像分割方法,包括基础功…...

python科学计算:NumPy 线性代数与矩阵操作
1 NumPy 中的矩阵与数组 在 NumPy 中,矩阵实际上是一种特殊的二维数组,因此几乎所有数组的操作都可以应用到矩阵上。不过,矩阵运算与一般的数组运算存在一定的区别,尤其是在点积、乘法等操作中。 1.1 创建矩阵 矩阵可以通过 Nu…...

Unity面向对象补全计划 之 List<T>与class(非基础)
C# & Unity 面向对象补全计划 泛型-CSDN博客 关于List,其本质就是C#封装好的一个数组,是一个很好用的轮子,所以并不需要什么特别说明 问题描述 假设我们有一个表示学生的类 Student,每个学生有姓名和年龄两个属性。我们需要创…...

ant design vue+vue3+ts+xlsx实现表格导出问excel文件(带自定义表头)~
1、首先默认你已安装ant design vue、xlsx 库、及file-saver。 2、导入: import * as XLSX from xlsx; import { saveAs } from file-saver; 注:这里的xlsx导入不能这么写,否则会报错,原因是版本不一致,语法向上兼容…...

基于Python爬虫的淘宝服装数据分析项目
文章目录 一.项目介绍二.爬虫代码代码分析 三. 数据处理四. 数据可视化 一.项目介绍 该项目是基于Python爬虫的淘宝服装数据分析项目,以致于帮助商家了解当前服装市场的需求,制定更加精确的营销策略。首先,需要爬取淘宝中关于服装的大量数据…...

Tomcat控制台乱码问题已解决(2024/9/7
步骤很详细,直接上教程 问题复现: 情景一 情景二 原因简述 这是由于编码不一致引起的,Tomcat启动后默认编码UTF-8,而Windows的默认编码是GBK。因此你想让其不乱码,只需配置conf\logging.properties的编码格式即可 解决…...

vue通过html2canvas+jspdf生成PDF问题全解(水印,分页,截断,多页,黑屏,空白,附源码)
前端导出PDF的方法不多,常见的就是利用canvas画布渲染,再结合jspdf导出PDF文件,代码也不复杂,网上的代码基本都可以拿来即用。 如果不是特别追求完美的情况下,或者导出PDF内容单页的话,那么基本上也就满足业…...

服务器数据恢复—Raid磁盘阵列故障类型和常见故障原因
出于尽可能避免数据灾难的设计初衷,RAID解决了3个问题:容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。 常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的:当部分数据异…...

C++字符串中的string类操作
愿我如星君如月,夜夜流光相皎洁。 ——《车逍遥篇》【宋】范成大 目录 正文: 主要特点: 基本操作: 代码演示: 总结: 今天我们接着上次的章节继续,这次我们来说一个为解决上个方法的缺陷而诞…...

axios设置responseType: ‘blob‘,获取接口返回的错误信息
在axios的请求中当后端接口返回的是文件流的情况下,我们需要在请求参数里面设置responseType: blob,如果接口报错,默认前端无法获取后端返回的错误信息。 解决方法:通过FileReader获取错误信息 async handleFetch() {const res aw…...

【C++】:模板初阶—函数模板|类模板
✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山岗! 💫 欢迎来到我的学习笔记! 本文参考博客:一同感受C模版的所带来的魅力 一、泛型编程思想 首先…...

Java 远程执行服务器上的命令
在Java中使用JSch库执行远程服务器上的命令是一种常见的做法,特别是在需要自动化运维任务或者进行远程文件操作时。以下是基于Codekru网站提供的示例,展示如何使用JSch库在远程服务器上执行单个或多个命令。 准备工作 首先,确保您的项目中已…...