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

解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题

1 功能特点

  • openpyxl
    • 这是一个专门用于操作Excel文件(.xlsx/.xlsm)的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素,如单元格、行、列、工作表等。例如,可以通过openpyxl轻松地创建一个新的Excel工作簿,添加工作表,设置单元格的样式(字体、颜色、对齐方式等)。
    • 可以读取Excel文件中的数据并进行逐行、逐列的处理。比如,以下代码片段展示了如何使用openpyxl读取一个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是一个强大的数据处理库,主要用于数据的分析、清洗和操作。它提供了高效的数据结构,如DataFrameSeries,可以处理各种类型的数据,包括从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提供了更直接的控制。
  • pandas适用场景
    • 对于数据分析任务,特别是需要对大量数据进行复杂的分析和处理时,pandas是首选。它可以方便地处理缺失数据、进行数据标准化、对数据进行各种统计分析(如计算相关性、协方差等)。
    • 当需要从不同数据源(Excel、CSV、SQL数据库等)整合数据并进行统一处理时,pandas的强大数据结构和功能使其能够轻松地完成数据的读取、合并和转换。例如,在数据挖掘、机器学习项目的前期数据准备阶段,pandas可以高效地清理和预处理数据。
  1. 性能方面
    • openpyxl:在处理大型Excel文件时,如果只是简单的读写操作,性能表现尚可。但是当涉及到大量的数据处理和复杂的计算时,可能会相对较慢,因为它的设计重点是Excel文件的结构和格式操作。
    • pandaspandas在数据处理方面进行了高度优化,对于大量数据的读取、筛选、排序等操作通常具有较高的效率。它使用了一些高效的数据存储和计算方法,能够快速地处理数据,特别是在内存允许的情况下,对大数据集的处理能力更强。

总的来说,openpyxlpandas各有优势。如果你的主要任务是对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()

这样就解决了openpyxlpandas的衔接

相关文章:

解决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. 创建&#xff08;插入&#xff09;文档插入单个文档插入多个文档 4. 查询文档查询单个文档查询多个文档复杂查询嵌套查询分页条件查询&#xff08;通用模版&#xff09; 5. 更新文档更新单个文档更新多个文档更新嵌…...

【JS】期约的Promise.all()和 Promise.race()区别

概述 Promise.all() 和 Promise.race() 都是 JavaScript 中处理多个异步操作的 Promise 方法&#xff0c;但它们的行为和返回结果有所不同。 Promise.all()和Promise.race() 1. Promise.all() Promise.all() 接受一个由多个 Promise 实例组成的可迭代对象&#xff08;例如数…...

使用 RxJS 库实现响应式编程

什么是 RxJS&#xff1f; RxJS&#xff08;Reactive Extensions for JavaScript&#xff09;是一个用于响应式编程的库&#xff0c;它使得处理异步数据流变得更加简单和优雅。通过使用 Observables&#xff08;可观察对象&#xff09;&#xff0c;你可以轻松地处理事件、HTTP …...

ARP攻击的原理和实现 (网络安全)

ARP攻击的原理和实现 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是一种网络协议&#xff0c;用于在局域网内将IP地址映射到MAC地址。在以太网中&#xff0c;设备通过广播ARP请求来查询目标IP地址对应的MAC地址&#xff0c;从而建立通信…...

chatgpt model spec 2024

概述 这是模型规范的初稿&#xff0c;该文档规定了我们在OpenAI API和ChatGPT中的模型的期望行为。它包括一组核心目标&#xff0c;以及关于如何处理冲突目标或指令的指导。 我们打算将模型规范作为研究人员和数据标注者创建数据的指南&#xff0c;这是一种称为从人类反馈中进…...

单片机-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型号的复杂特性之前&#xff0c;我们首先需要明确其基本参数和功能。这款型号的LED产品以其独特的双色设计和卓越的性能在众多同类产品中脱颖而出。其外观尺寸为3.0x1.0x2.1mm&#xff0c;采用高亮黄光和红光的双色组合&#xff0c;赋予了其在多种应用…...

Appium(一)--- 环境搭建

一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装&#xff1a;默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加&#xff1a;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin&#xff1b;(3) 验证…...

量子力学复习

黑体辐射 热辐射 绝对黑体&#xff1a; &#xff08;辐射能力很强&#xff0c;完全的吸收体&#xff0c;理想的发射体&#xff09; 辐射实验规律&#xff1a; 温度越高&#xff0c;能量越大&#xff0c;亮度越亮 温度越高&#xff0c;波长越短 光电效应 实验装置&#xf…...

22408操作系统期末速成/复习(考研0基础上手)

第一部分:计算题&#xff1a; 考察范围&#xff1a;&#xff08;标红的是重点考&#xff09; 第一章&#xff1a;CPU利用率&#xff1a; 第二章&#xff1a; 进程调度算法&#xff08;需要注意不同调度算法的优先级和题目中给出的是否可以抢占【分为可抢占和不可抢占&#xff…...

两种分类代码:独热编码与标签编码

目录 一、说明 二、理解分类数据 2.1 分类数据的类型&#xff1a;名义数据与序数数据 2.2 为什么需要编码 三、什么是独热编码&#xff1f; 3.1 工作原理&#xff1a;独热编码背后的机制 3.2 应用&#xff1a;独热编码的优势 四、什么是标签编码&#xff1f; 4.1 工作原理&…...

51单片机——共阴数码管实验

数码管中有8位数字&#xff0c;从右往左分别为LED1、LED2、...、LED8&#xff0c;如下图所示 如何实现点亮单个数字&#xff0c;用下图中的ABC来实现 P2.2管脚控制A&#xff0c;P2.3管脚控制B&#xff0c;P2.4管脚控制C //定义数码管位选管脚 sbit LSAP2^2; sbit LSBP2^3; s…...

【开源社区openEuler实践】rust_shyper

title: 探索 Rust_Shyper&#xff1a;系统编程的新前沿 date: ‘2024-12-30’ category: blog tags: Rust_ShyperRust 语言系统编程性能与安全 sig: Virt archives: ‘2024-12’ author:way_back summary: Rust_Shyper 作为基于 Rust 语言的创新项目&#xff0c;在系统编程领域…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...