当前位置: 首页 > news >正文

人生苦短我用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 函数

  • pandasread_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]:
  • 常用参数
参数说明默认值
ioExcel 文件的路径或文件对象
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文件都是常用的电子表格文件格式&#xff0c;其中csv格式更便于用于数据交换和处理。本文使用pandas库将Excel文件转化为csv文…...

Web2和Web3笔记

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

单元测试 Mock不Mock?

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

常用排序算法(上)

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

【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十六)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

小程序的页面跳转方式

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

第 21 章 DOM 操作表格及样式

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

vc-align源码分析 -- ant-design-vue系列

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

计算机网络(四) —— 简单Tcp网络程序

目录 一&#xff0c;服务器初始化 1.0 部分文件代码 1.1 关于Tcp协议 1.2 创建和绑定套接字 1.3 监听 二&#xff0c;服务器启动 2.1 获取连接 2.2 提供服务 2.3 客户端启动源文件 Main.cc 二&#xff0c;客户端编写 2.1 关于Tcp客户端 2.2 客户端代码 2.3 效果…...

简单的Linux Ftp服务搭建

简单的Linux FTP服务搭建 1.需求 公司有一个esb文件传输代理&#xff0c;其中我们程序有文件传输功能&#xff0c;需要将本地文件传输到esb文件代理服务器上&#xff0c;传输成功之后发送http请求&#xff0c;告知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 中的条件表达式&#xff08;也称为三元运算符&#xff09;是一种简洁的语法&#xff0c;用于在单个表达式中执行 if-else 逻辑。虽然它们本身并不直接“优化”代码的执行速度&#xff0c;但它们可以使代码更加简洁、易读&#xff0c;并且有助于避免不必要的嵌套或复杂的…...

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批量读取身份证信息录入系统和重命名

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

IBM Storwize V7000存储控制器故障节点报错574

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

通信工程学习:什么是SSB单边带调制、VSB残留边带调制、DSB抑制载波双边带调制

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

MapSet之二叉搜索树

系列文章&#xff1a; 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 是一个非常强大的计算机视觉库&#xff0c;支持各种图像处理任务。图像分割是 OpenCV 支持的一个重要功能&#xff0c;它用于将图像划分为不同的区域&#xff0c;识别感兴趣的部分。我们将通过介绍 OpenCV 中的图像分割方法&#xff0c;包括基础功…...

python科学计算:NumPy 线性代数与矩阵操作

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

Unity面向对象补全计划 之 List<T>与class(非基础)

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

ant design vue+vue3+ts+xlsx实现表格导出问excel文件(带自定义表头)~

1、首先默认你已安装ant design vue、xlsx 库、及file-saver。 2、导入&#xff1a; import * as XLSX from xlsx; import { saveAs } from file-saver; 注&#xff1a;这里的xlsx导入不能这么写&#xff0c;否则会报错&#xff0c;原因是版本不一致&#xff0c;语法向上兼容…...

基于Python爬虫的淘宝服装数据分析项目

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

Tomcat控制台乱码问题已解决(2024/9/7

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

vue通过html2canvas+jspdf生成PDF问题全解(水印,分页,截断,多页,黑屏,空白,附源码)

前端导出PDF的方法不多&#xff0c;常见的就是利用canvas画布渲染&#xff0c;再结合jspdf导出PDF文件&#xff0c;代码也不复杂&#xff0c;网上的代码基本都可以拿来即用。 如果不是特别追求完美的情况下&#xff0c;或者导出PDF内容单页的话&#xff0c;那么基本上也就满足业…...

服务器数据恢复—Raid磁盘阵列故障类型和常见故障原因

出于尽可能避免数据灾难的设计初衷&#xff0c;RAID解决了3个问题&#xff1a;容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。 常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的&#xff1a;当部分数据异…...

C++字符串中的string类操作

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

axios设置responseType: ‘blob‘,获取接口返回的错误信息

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

【C++】:模板初阶—函数模板|类模板

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山岗&#xff01; &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 本文参考博客&#xff1a;一同感受C模版的所带来的魅力 一、泛型编程思想 首先…...

Java 远程执行服务器上的命令

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