解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题
1 功能特点
- openpyxl:
- 这是一个专门用于操作Excel文件(
.xlsx/.xlsm)的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素,如单元格、行、列、工作表等。例如,可以通过openpyxl轻松地创建一个新的Excel工作簿,添加工作表,设置单元格的样式(字体、颜色、对齐方式等)。 - 可以读取Excel文件中的数据并进行逐行、逐列的处理。比如,以下代码片段展示了如何使用
openpyxl读取一个Excel文件中的数据:
- 这是一个专门用于操作Excel文件(
import openpyxl# 打开工作簿
workbook = openpyxl.load_workbook('example.xlsx')
# 选择工作表
worksheet = workbook['Sheet1']
# 遍历行和列读取数据
for row in worksheet.iter_rows(values_only=True):for cell_value in row:print(cell_value)
- pandas:
pandas是一个强大的数据处理库,主要用于数据的分析、清洗和操作。它提供了高效的数据结构,如DataFrame和Series,可以处理各种类型的数据,包括从CSV文件、数据库、Excel文件等多种数据源获取的数据。- 对于数据的分析和转换非常方便。例如,可以使用
pandas轻松地对数据进行排序、分组、过滤和聚合操作。以下是一个简单的示例,展示如何使用pandas读取Excel文件中的数据并进行简单的数据分析:
import pandas as pd# 读取Excel文件
df = pd.read_excel('example.xlsx')
# 查看数据的前几行
print(df.head())
# 计算某一列的平均值
column_mean = df['column_name'].mean()
print(column_mean)
2 适用场景
- openpyxl适用场景:
- 当需要对Excel文件进行细致的格式设置和底层的文件结构操作时,
openpyxl是更好的选择。例如,在需要创建具有特定样式的复杂报表,如添加带有各种样式(如不同字体、颜色、边框)的表格、图表,或者需要在Excel文件中插入图像、超链接等元素时,openpyxl可以很好地完成这些任务。 - 如果主要的工作是和Excel文件本身的交互,比如需要将数据按照Excel的特定格式(如单元格合并、冻结窗格等)进行输出,
openpyxl提供了更直接的控制。
- 当需要对Excel文件进行细致的格式设置和底层的文件结构操作时,
- pandas适用场景:
- 对于数据分析任务,特别是需要对大量数据进行复杂的分析和处理时,
pandas是首选。它可以方便地处理缺失数据、进行数据标准化、对数据进行各种统计分析(如计算相关性、协方差等)。 - 当需要从不同数据源(Excel、CSV、SQL数据库等)整合数据并进行统一处理时,
pandas的强大数据结构和功能使其能够轻松地完成数据的读取、合并和转换。例如,在数据挖掘、机器学习项目的前期数据准备阶段,pandas可以高效地清理和预处理数据。
- 对于数据分析任务,特别是需要对大量数据进行复杂的分析和处理时,
- 性能方面
- openpyxl:在处理大型Excel文件时,如果只是简单的读写操作,性能表现尚可。但是当涉及到大量的数据处理和复杂的计算时,可能会相对较慢,因为它的设计重点是Excel文件的结构和格式操作。
- pandas:
pandas在数据处理方面进行了高度优化,对于大量数据的读取、筛选、排序等操作通常具有较高的效率。它使用了一些高效的数据存储和计算方法,能够快速地处理数据,特别是在内存允许的情况下,对大数据集的处理能力更强。
总的来说,
openpyxl和pandas各有优势。如果你的主要任务是对Excel文件进行精细的格式设置和文件结构操作,选择openpyxl;如果重点是数据分析和处理,pandas会是更好的工具。在实际项目中,有时也可以将两者结合使用,充分发挥它们的优势。还有就是
openpyxl可以保留excle原始的公式、样式等,但是pandas就是纯数据了
3 问题以及解决
目前因为开发需求的原因,因为excel中带了公式,所以我前面用了openpyxl库,然后生成了一个新的文档,这样文档中带有公式的列就会自动更新并产生新的值。
后面因为pandas在大数据处理这块根据优势,因此选择了pandas,但是遇到的问题是当我用pandas打开并且读取带公式那列的时候,读取出来的全是公式字符,即使用pd.read_excel(data_path,engine='openpyxl',sheet_name="日回收")也不行,但我想要的是数字。
后面发现在openpyxl生成后,先打开excle,然后每次都要我保存,保存之后,再执行pandas的那部分代码,发现可以读出值了
但我又不可能每次都要这样操作,通过后续查找资料(这里忘记远处了,忘原谅,借原作者代码一用),可以写一个方法,就是在后台去执行上面的操作,如下
# filename是文件路径
def just_open(filename):xlApp = DispatchEx("Excel.Application")xlApp.Visible = FalsexlBook = xlApp.Workbooks.Open(filename)xlBook.Save()xlBook.Close()
这样就解决了openpyxl和pandas的衔接
相关文章:
解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题
1 功能特点 openpyxl: 这是一个专门用于操作Excel文件(.xlsx/.xlsm)的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素,如单元格、行、列、工作表等。例如,可以通过openpyxl轻松地创建一个新的Excel工作…...
基于傅立叶神经网络(FNN)与物理信息神经网络(PINN)求解泊松方程(附Pytorch源代码)
基于傅立叶神经网络(FNN)与物理信息神经网络(PINN)求解泊松方程 一、引言 偏微分方程(Partial Differential Equation, PDE)在科学与工程领域有着广泛的应用。传统数值方法(如有限差分法、有限元法)在求解这类问题时,尽管已经非常成熟,但随着问题复杂度的增加,其计…...
小程序组件 —— 28 组件案例 - 推荐商品区域 - 实现结构样式
这一节目标是实现底部推荐商品的结构和样式,由于这里要求横向滚动,所以需要使用上节介绍的 scroll-view 功能,并使用 scroll-x 属性支持横向滚动,推荐商品区域中的每一个商品是一个单独的 view,每个view 中需要写三个组…...
Flink读写Kafka(DataStream API)
在Flink里,已经预定义了kafka connector,使用该connector我们可以读写kafka,并且能实现exactly once的语义。 要使用需要引入相关的maven依赖,在这里,因为读写kafka,就会涉及一个问题,kafka-client和broker的版本兼容问题,不过因为kafka client和broker的双向兼容的良…...
SCAU期末笔记 - 数据库系统概念往年试卷解析
数据库搞得人一头雾水,题型太多太杂,已经准备摆烂了。就刷刷往年试卷,挂不挂听天由命。 2019年 Question 1 选择题 1. R ∩ S R∩S R∩S等于一下哪个选项? 画个文氏图秒了 所以选A. R ∩ S R − ( R − S ) R∩SR-(R-S) R∩…...
flutter在windows平台中运行报错
PS D:\F\luichun> flutter run当运行flutter项目时,【解决如下报错】 /C:/flutter/packages/flutter/lib/src/painting/star_border.dart:530:27: Error: The getter Matrix4 isnt defined for the class _StarGenerator.- _StarGenerator is from package:flut…...
HTML——75. 内联框架
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内联框架</title><style type"text/css">iframe{width: 100%;height: 500px;}</style></head><body><!--iframe元素会创建包含…...
python对mongodb的增删查改
python对mongodb的增删查改 1. 安装 pymongo2. 连接 MongoDB3. 创建(插入)文档插入单个文档插入多个文档 4. 查询文档查询单个文档查询多个文档复杂查询嵌套查询分页条件查询(通用模版) 5. 更新文档更新单个文档更新多个文档更新嵌…...
【JS】期约的Promise.all()和 Promise.race()区别
概述 Promise.all() 和 Promise.race() 都是 JavaScript 中处理多个异步操作的 Promise 方法,但它们的行为和返回结果有所不同。 Promise.all()和Promise.race() 1. Promise.all() Promise.all() 接受一个由多个 Promise 实例组成的可迭代对象(例如数…...
使用 RxJS 库实现响应式编程
什么是 RxJS? RxJS(Reactive Extensions for JavaScript)是一个用于响应式编程的库,它使得处理异步数据流变得更加简单和优雅。通过使用 Observables(可观察对象),你可以轻松地处理事件、HTTP …...
ARP攻击的原理和实现 (网络安全)
ARP攻击的原理和实现 ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于在局域网内将IP地址映射到MAC地址。在以太网中,设备通过广播ARP请求来查询目标IP地址对应的MAC地址,从而建立通信…...
chatgpt model spec 2024
概述 这是模型规范的初稿,该文档规定了我们在OpenAI API和ChatGPT中的模型的期望行为。它包括一组核心目标,以及关于如何处理冲突目标或指令的指导。 我们打算将模型规范作为研究人员和数据标注者创建数据的指南,这是一种称为从人类反馈中进…...
单片机-LED实验
1、51工程模版 #include "reg52.h" void main(){ while(1){ } } 2、LED灯亮 #include "reg52.h" sbit LED1P2^0; void main(){ while(1){ LED10; } } 3、LED闪烁 #include "reg52.h" sbit LED1P2^0; //P2大…...
QILSTE H10-C321HRSYYA高亮红光和黄光LED灯珠
在深入探讨H10-C321HRSYYA型号的复杂特性之前,我们首先需要明确其基本参数和功能。这款型号的LED产品以其独特的双色设计和卓越的性能在众多同类产品中脱颖而出。其外观尺寸为3.0x1.0x2.1mm,采用高亮黄光和红光的双色组合,赋予了其在多种应用…...
Appium(一)--- 环境搭建
一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装:默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(3) 验证…...
量子力学复习
黑体辐射 热辐射 绝对黑体: (辐射能力很强,完全的吸收体,理想的发射体) 辐射实验规律: 温度越高,能量越大,亮度越亮 温度越高,波长越短 光电效应 实验装置…...
22408操作系统期末速成/复习(考研0基础上手)
第一部分:计算题: 考察范围:(标红的是重点考) 第一章:CPU利用率: 第二章: 进程调度算法(需要注意不同调度算法的优先级和题目中给出的是否可以抢占【分为可抢占和不可抢占ÿ…...
两种分类代码:独热编码与标签编码
目录 一、说明 二、理解分类数据 2.1 分类数据的类型:名义数据与序数数据 2.2 为什么需要编码 三、什么是独热编码? 3.1 工作原理:独热编码背后的机制 3.2 应用:独热编码的优势 四、什么是标签编码? 4.1 工作原理&…...
51单片机——共阴数码管实验
数码管中有8位数字,从右往左分别为LED1、LED2、...、LED8,如下图所示 如何实现点亮单个数字,用下图中的ABC来实现 P2.2管脚控制A,P2.3管脚控制B,P2.4管脚控制C //定义数码管位选管脚 sbit LSAP2^2; sbit LSBP2^3; s…...
【开源社区openEuler实践】rust_shyper
title: 探索 Rust_Shyper:系统编程的新前沿 date: ‘2024-12-30’ category: blog tags: Rust_ShyperRust 语言系统编程性能与安全 sig: Virt archives: ‘2024-12’ author:way_back summary: Rust_Shyper 作为基于 Rust 语言的创新项目,在系统编程领域…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
