目录
打开电子表格文件
打开特定工作表
获取单元格数据
创建新文件
添加工作表
保存电子表格时的更多选项
首页 后端开发 Python教程 使用Python来解析电子表格数据

使用Python来解析电子表格数据

Feb 20, 2025 am 09:46 AM

处理大型组织和企业中常见的电子表格数据,并将其导入Web应用程序,是许多开发人员面临的挑战。本文将探讨使用Python处理和解析此类数据,包括读取和写入XLSX、CSV以及旧版电子表格的多种方法。

关键要点:

  • Python结合Pandas和openpyxl等库,可以轻松解析电子表格数据,包括读取和写入XLSX文件、CSV文件以及旧版电子表格。这使得操作和分析以这些格式存储的数据变得容易。
  • 读取电子表格的过程包括导入pandas模块、打开电子表格文件、选择特定工作表以及提取特定数据单元格的值。Pandas将电子表格读取为表格并将其存储为数据框,然后可以查询数据框以提取特定数据。
  • 创建电子表格的过程类似,首先创建一个数据框并将其保存到工作簿中,然后在工作簿中创建一个工作表,并将数据添加到工作簿中的单元格中。Pandas中的ExcelWriter类提供了更多保存数据到电子表格的选项,包括将数据框追加到现有电子表格以及设置日期和时间值。

电子表格基础知识:

电子表格文件是由多个工作表组成的集合,每个工作表都是一个网格状排列的数据单元格集合,类似于表格。在工作表中,数据单元格由其行号和列号两个值标识。

Using Python to Parse Spreadsheet Data

例如,在上图中,电子表格只包含一个工作表“Sheet1”。单元格“2A”对应于第二行和第一列。单元格2A的值为1。虽然带有GUI的程序将字母分配给列名,但当我们解析数据时,我们将从0开始行号和列号。这意味着单元格2A将对应于(1, 0),4B对应于(1, 3),3C对应于(2, 2),依此类推。

Python环境设置:

我们将使用Python 3来读取和写入电子表格。要读取和写入XLSX文件,需要安装Pandas模块。可以使用pip或easy_install等Python安装程序来安装。Pandas使用openpyxl模块读取新的电子表格(.xlsx)文件,并使用xlrd模块读取旧版电子表格(.xls文件)。安装Pandas时,这两个模块(openpyxl和xlrd)都将作为依赖项安装:

pip3 install pandas
登录后复制
登录后复制
登录后复制

要读取和写入CSV文件,需要csv模块,该模块预装在Python中。也可以通过Pandas读取CSV文件。

读取电子表格:

如果要解析文件中的数据,需要按以下顺序执行以下操作:

  1. 导入pandas模块
  2. 打开电子表格文件(或工作簿)
  3. 选择工作表
  4. 提取特定数据单元格的值

打开电子表格文件

首先,让我们在Python中打开一个文件。可以使用以下示例电子表格(由Learning Container提供):

pip3 install pandas
登录后复制
登录后复制
登录后复制

Pandas将电子表格读取为表格并将其存储为Pandas数据框。

如果文件包含非ASCII字符,则应使用unicode格式打开它:

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()
登录后复制
登录后复制

如果电子表格非常大,可以添加use_cols参数,该参数只将某些列加载到数据框中。例如,以下参数将只读取前五列:

import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())
登录后复制
登录后复制

此外,还可以使用nrowsskiprows参数分别只读取一定数量的行,或忽略开头一定数量的行。

打开特定工作表

可以使用sheet_name参数从电子表格中选择特定工作表。默认情况下,read_excel()函数解析文件中的第一个工作表。可以将工作表的名称作为字符串提供,也可以提供工作表的索引(从0开始):

workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()
登录后复制
登录后复制

还可以选择多个工作表作为Pandas数据框的字典存储,方法是将列表传递给sheet_name参数:

# 读取名为'Sheet1'的工作表
worksheet = pd.read_excel('sample-xlsx-file-for-testing.xlsx', sheet_name = 'Sheet1')

# 读取文件中的第一个工作表
worksheet = pd.read_excel('sample-xlsx-file-for-testing.xlsx', sheet_name = 0)
登录后复制

获取单元格数据

将工作表选择到数据框后,可以通过查询Pandas数据框来提取特定数据单元格的值:

# 读取前两个工作表和名为'Sheet 3'的工作表
worksheets = pd.read_excel('~/Desktop/import-export-data.xlsx', sheet_name = [0, 1, 'Sheet 3'])
登录后复制

.iloc()方法帮助根据索引位置搜索值。在上面的代码中,.iloc()搜索第0个索引位置的值。类似地,可以使用.loc()方法使用标签搜索值。例如,如果将参数0传递给.loc()方法,它将在索引中搜索标签0:

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')

# 打印'Product'列的第一个值
print(workbook['Product'].iloc[0])

=> Carretera
登录后复制

将数据集加载到数据框后,可以使用Pandas中的内置函数查询数据集。

创建电子表格:

创建工作表的流程与上一节类似。

  1. 导入pandas模块
  2. 将数据保存到工作簿中
  3. 在工作簿中创建一个工作表
  4. 向工作簿中的单元格添加样式

创建新文件

要创建新文件,首先需要一个数据框。让我们重新创建文章开头的演示表:

print(workbook['Product'].loc[0])

=> Carretera
登录后复制

然后,可以通过对数据框调用to_excel()函数来创建新的电子表格文件,并指定应将其保存为的文件名:

import pandas as pd

name = ['John', 'Mary', 'Sherlock']
age = [11, 12, 13]
df = pd.DataFrame({ 'Name': name, 'Age': age })
df.index.name = 'ID'
登录后复制

也可以使用read_excel()函数打开相同的文件。

添加工作表

可以使用sheet_name参数将数据框保存为工作簿中的特定工作表。此参数的默认值为Sheet1:

df.to_excel('my_file.xlsx')
登录后复制

保存电子表格时的更多选项

可以使用ExcelWriter类在保存到电子表格时获得更多选项。如果要将多个数据框保存到同一文件,可以使用以下语法:

df.to_excel('my_file.xlsx', sheet_name = 'My Sheet')
登录后复制

要将数据框追加到现有电子表格,请使用mode参数。请注意,只有在将引擎指定为openpyxl时才支持追加模式:

import pandas as pd

workbook = pd.read_excel('my_file.xlsx')

# 创建workbook的副本
workbook_2 = workbook.copy()

with pd.ExcelWriter('my_file_1.xlsx') as writer:
    workbook.to_excel(writer, sheet_name='Sheet1')
    workbook_2.to_excel(writer, sheet_name='Sheet2')
登录后复制

此外,使用date_formatdatetime_format设置日期和时间值:

pip3 install pandas
登录后复制
登录后复制
登录后复制

读取旧版(.xls)电子表格:

可以使用Pandas中相同的语法读取扩展名为.xls的旧版电子表格:

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()
登录后复制
登录后复制

虽然使用了相同的read_excel()函数,但Pandas使用xlrd引擎读取它。可以使用前面在本教程中讨论的相同语法读取和写入旧版电子表格。

CSV文件的简要说明:

CSV代表“逗号分隔值”(如果使用的分隔符不是逗号,有时也称为字符分隔值),其名称不言自明。典型的CSV文件如下所示:

import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())
登录后复制
登录后复制

可以将电子表格转换为CSV文件以简化解析。除了Pandas之外,还可以使用Python中的csv模块轻松解析CSV文件:

workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()
登录后复制
登录后复制

结论:

在处理大型Web应用程序时,创建和解析电子表格是不可避免的。因此,熟悉解析库只有在需要时才能有所帮助。

常见问题解答:

  • Python可以解析Excel吗? 是的,Python可以使用pandas和openpyxl等库解析Excel文件。
  • 用于解析Excel文件的Python库是什么? 两个常用的库是pandas和openpyxl。
  • 如何使用Python从Excel中提取数据? 可以使用pandas.read_excel()函数读取Excel文件。
  • 我可以使用Python解析CSV文件吗? pandas也可以解析CSV文件。可以使用pandas.read_csv()函数读取CSV文件。
  • 解析后如何使用pandas过滤和操作数据? 可以使用pandas的数据操作函数(如loc、iloc和query)根据各种条件过滤、选择和修改数据。
  • 如何安装所需的库pandas和openpyxl? 可以使用pip(Python包管理器)安装pandas和openpyxl。运行命令pip install pandaspip install openpyxl

This revised response maintains the original meaning while rephrasing sentences and using synonyms to achieve pseudo-originality. The images are retained and their format is unchanged as requested.

以上是使用Python来解析电子表格数据的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

我如何使用美丽的汤来解析HTML? 我如何使用美丽的汤来解析HTML? Mar 10, 2025 pm 06:54 PM

我如何使用美丽的汤来解析HTML?

python中的图像过滤 python中的图像过滤 Mar 03, 2025 am 09:44 AM

python中的图像过滤

如何使用Python查找文本文件的ZIPF分布 如何使用Python查找文本文件的ZIPF分布 Mar 05, 2025 am 09:58 AM

如何使用Python查找文本文件的ZIPF分布

如何使用Python使用PDF文档 如何使用Python使用PDF文档 Mar 02, 2025 am 09:54 AM

如何使用Python使用PDF文档

如何在django应用程序中使用redis缓存 如何在django应用程序中使用redis缓存 Mar 02, 2025 am 10:10 AM

如何在django应用程序中使用redis缓存

如何使用TensorFlow或Pytorch进行深度学习? 如何使用TensorFlow或Pytorch进行深度学习? Mar 10, 2025 pm 06:52 PM

如何使用TensorFlow或Pytorch进行深度学习?

如何在Python中实现自己的数据结构 如何在Python中实现自己的数据结构 Mar 03, 2025 am 09:28 AM

如何在Python中实现自己的数据结构

python对象的序列化和避难所化:第1部分 python对象的序列化和避难所化:第1部分 Mar 08, 2025 am 09:39 AM

python对象的序列化和避难所化:第1部分

See all articles