使用 Python 处理 Excel 表格数据的实用技巧

简介

在日常工作中,处理 Excel 表格数据是一项常见的任务。Python 提供了丰富的库和工具,能够帮助我们高效地处理 Excel 数据。本篇博客将介绍如何使用 openpyxl 库来读取 Excel 表格并进行数据处理,同时展示一个实际案例,说明如何从 Excel 表格中提取数据并转换为 JSON 格式进行存储。

准备工作

在开始之前,确保你已经安装了 openpyxl 库。如果尚未安装,可以通过以下命令进行安装:

pip install openpyxl

读取 Excel 表格

首先,我们需要使用 openpyxl 库来读取 Excel 表格数据。下面是读取 Excel 表格的基本步骤:

  1. 获取表格的工作簿对象
  2. 得到表单(sheet)
  3. 获取单元格数据
  4. 获取单元格数据的值
# 代码示例
from openpyxl import load_workbook
import pathlib# 获取excel的相对路径
cur_path = pathlib.Path(__file__).absolute()
excel_path = cur_path.parent / "B题附件1.xlsx"# 获取工作簿对象
wb = load_workbook(excel_path)# 获取表单——sheet
sheet = wb["选课情况"]# 获取单元格数据
cell_value = sheet.cell(row=2, column=2).value

数据处理与转换

接下来,我们将介绍如何利用 Python 对 Excel 表格中的数据进行处理和转换。在本例中,我们将演示如何将 Excel 表格中的数据转换为 JSON 格式并进行存储。以下是代码示例:

# 代码示例
import json# 获取表单中所有的数据 -- 转化为列表
datas = list(sheet.values)
# 取出标题
title = datas[0]# 再一次获取后续的每一行数据,跟title压缩成字典
case_list = []
for case in datas[1:]:case_dict = dict(zip(title, case))case_list.append(case_dict)# 存储学生的字典
students_dict = {}# 遍历原始数据,按照选课情况将学生存储到相应的列表中
for student in case_list:courses = [key for key, value in student.items() if key != '学生' and key != '行政班' and value == 1]key = tuple(courses)  # 以选课情况作为键if key not in students_dict:students_dict[key] = []students_dict[key].append(student['学生'])# 输出存储结果
print(students_dict)# 将结果转化为 JSON 格式并存储到文件中
students_dict = {str(key): value for key, value in students_dict.items()}
with open('data.json', 'w', encoding='utf-8') as f:json.dump(students_dict,f,ensure_ascii=False,indent=4)

总结

本文介绍了如何使用 Python 中的 openpyxl 库来处理 Excel 表格数据,并提供了一个实际案例,展示了从 Excel 表格中提取数据并转换为 JSON 格式的过程。希望本文能够帮助读者更好地利用 Python 处理 Excel 数据,提高工作效率。

结语

如果您有任何问题或意见,欢迎在评论区留言,我们会尽快回复您。谢谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/21838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3079. 求出加密整数的和

给你一个整数数组 nums ,数组中的元素都是 正 整数。定义一个加密函数 encrypt ,encrypt(x) 将一个整数 x 中 每一个 数位都用 x 中的 最大 数位替换。比方说 encrypt(523) 555 且 encrypt(213) 333 。 请你返回数组中所有元素加密后的 和 。 示例 1&…

HTML基本元素包含HTML表单验证

可将以下代码复制另存为一个HTML文件浏览器打开自己去看看实际使用效果 <!DOCTYPE html> <html> <head> <meta charset"utf-8"><title>测试</title> </head> <body> <h1>很多事</h1> <h1><b&…

多项分布模拟及 Seaborn 可视化教程

多项分布 简介 多项分布是二项分布的推广&#xff0c;它描述了在 n 次独立试验中&#xff0c;k 种不同事件分别出现次数的离散概率分布。与二项分布只能有两种结果&#xff08;例如成功/失败&#xff09;不同&#xff0c;多项分布可以有 k 种&#xff08;k ≥ 2&#xff09;及…

Nginx的Location匹配与Rewrite重写

目录 一.Nginx中location与rewrite 1.Nginx中常用正则表达式 2.location与rewrite的联系和区别 二.location概述 1.分类 2.匹配规则 3.优先级 4.示例 三.rewrite概述 1.rewrite功能 2.rewrite执行顺序 3.跳转实现 4.语法格式 5.示例 5.1.基于域名的跳转 5.2.基…

四、利用启发式算法进行特定数据集的残差网络结构搜索【框架+源码】

背景&#xff1a;工作之后干的事情跟算法关联甚少&#xff0c;整理下读书期间的负责和参与的work&#xff0c;再熟悉学习下。 边熟悉边整理喽~ CV Tradictional workCV AI based work机械臂视觉抓取项目机器学习全流程 Pipeline训练平台OCR生产线喷码识别三维重建(SfM)ROS机器人…

C++的vector使用优化

我们在上一章说了如何使用这个vector动态数组&#xff0c;这章我们说说如何更好的使用它以及它是如何工作的。当你创建一个vector&#xff0c;然后使用push_back添加元素&#xff0c;当当前的vector的内存不够时&#xff0c;会从内存中的旧位置复制到内存中的新位置&#xff0c…

Spring 之 Lifecycle 及 SmartLifecycle

最近在看Eureka源码&#xff0c;本想快速解决这场没有硝烟的战役&#xff0c;不曾想阻塞性问题一个接一个。为正确理解这个框架&#xff0c;我不得不耐着性子&#xff0c;慢慢梳理这些让人困惑的点。譬如本章要梳理的Lifecycle和SmartLifecycle。它们均为接口&#xff0c;其中后…

mysql的锁(全局锁)

文章目录 mysql按照锁的粒度分类全局锁概念&#xff1a;全局锁使用场景&#xff1a;全局锁备份案例&#xff1a; mysql按照锁的粒度分类 全局锁 概念&#xff1a; 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法&#xff0c;命令是: Flush tables with…

java —— 文件的创建、删除、查询和重命名

文件的相关操作通过 File 类并引入路径来实现&#xff0c;这里对文件的操作只是对文件本身的增、删、查等&#xff0c;不包括对文件内容的修改。 一、创建文件/文件夹 public static void main(String[] args) {//创建文件File file1new File("D:\\android\\test\\a.jpg…

vue封装url验证方法

vue封装url验证方法 在 Vue 中&#xff0c;你可以封装一个 URL 验证的方法来验证给定的 URL 是否有效。以下是一个示例代码&#xff1a; export const validateUrl (url) > {const regex /^(https?:\/\/)?([\da-z.-])\.([a-z.]{2,6})([/\w .-]*)*/;return regex.test(…

排序算法——归并排序以及非递归实现

一、归并排序思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列…

OkHttp,一个贼牛的Java工具包

在当今的网络应用开发中,Java 作为一种成熟的编程语言,广泛应用于服务器端和客户端的开发。网络请求作为应用开发中不可或缺的一部分,选择一个高效、稳定的网络库尤为重要。OkHttp 就是这样一款优秀的网络库,它为Java提供了简单易用、功能强大的网络请求能力。本文将向读者…

关于编译的一些思路和猜想

一、编译原理的难度 编译原理特别复杂&#xff0c;研究的是高级语言如何翻译成汇编语言的过程。 二、编译过程中一些思路 (一)语义识别的作用 语义识别指的是把一些无关字符忽略&#xff0c;把一些变量名保存在一起&#xff0c;把用空格隔开的关键字单独放一起。 例如&#…

重新ysyx

一、克隆仓库 1.创建ssh key ssh-keygen -t rsa cd ~/.ssh ls 查看里面是否有id_rsa id_rsa.pub ssh-keygen -t rsa -C "xiantong15834753336outlook.com" cat id_rsa.pub***********查看里面的内容&#xff0c;复制到下图中绿色的按钮 git init ssh -T g…

spark3.0.1版本查询Hbase数据库例子

需求背景 现有需求&#xff0c;需要采用spark查询hbase数据库的数据同步到中间分析库&#xff0c;记录spark集成hbase的简单例子代码 import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.{ConnectionFactory, Scan} import org.apach…

Marin说PCB之Max parallel知多少?

今天是个阳光明媚&#xff0c;万里乌云的好日子。小编我一如既往地到家打开电脑准备看腾讯视频的五十公里桃花坞的第四季&#xff0c;在看到汪苏泷汪台说650电台要解散的时候小编我差点也哭了。650电台之于桃花坞就像乐队的鼓手一样&#xff0c;都是一个团队的灵感啊&#xff0…

CSS中的长度单位详解

在CSS中&#xff0c;长度单位是定义元素尺寸、间距、边距等的重要工具。不同的长度单位具有不同的特性和使用场景。 绝对长度单位 绝对长度单位在所有设备和浏览器中表示相同的长度。这些单位包括&#xff1a; 1.像素&#xff08;px&#xff09; 像素是最常用的长度单位。一…

C语言分支和循环(2)

我的相关博客&#xff1a; C语言的分支与循环&#xff08;1&#xff09; 1.switch语句 除了 if 语句外&#xff0c;C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 的 if...else 结构&#xff0c;⽤于判断条件有多个结果的情况。它把多重 else if…

非质量成本总结

非质量成本 非质量成本 定义 举例 固定成本 不随生产量或工作量变动而变动的成本 办公室租赁费 可变成本 随着生产量或工作变动而变动的成本 材料费 直接成本 可以直接计入某项目的成本 工人工资 间接成本 不能直接计入某项目而需要再几个项目之间或在项目与职能部…

Linux基本指令3

Linux基本指令3 目录 Linux基本指令3 一、Linux文件系统管理 二、Linux进程与服务管理