操作EXCEL计算3万条数据的NDVI并填入
Python操作EXCEL,计算3万条数据的NDVI并填入
问题描述
现在是有构建好了的查找表,不过构建了3万条数据,在excel中手动计算每行的NDVI值太麻烦了,也不会操作。
就试试python吧,毕竟python自动处理大型EXCEL数据很方便

思路
先用pd打开表格,存为dataframe。然后创建一个空的列表用来存入计算好的ndvi。在第一个循环中,计算每行的ndvi,并添加到列表中去。然后打开原来的文件,在第二个循环中,对每一个指定位置逐行写入列表中对应的ndvi值。最后保存文件
源代码
import pandas as pd
# 使用python在已存在的excel数据表中的特定位置写入数据
# excel表中的行和列都是从1开始的
import openpyxl as opfilePath = r"C:/Users/lenovo/Desktop/lut.xlsx"
def readDataFile(readPath): # readPath: 数据文件的地址和文件名try:if (readPath[-4:] == ".csv"):dfFile = pd.read_csv(readPath, header=0, sep=",") # 间隔符为逗号,首行为标题行# dfFile = pd.read_csv(filePath, header=None, sep=",") # sep: 间隔符,无标题行elif (readPath[-4:] == ".xls") or (readPath[-5:] == ".xlsx"): # sheet_name 默认为 0dfFile = pd.read_excel(readPath,header=0) # 首行为标题行# dfFile = pd.read_excel(filePath, header=None) # 无标题行elif (readPath[-4:] == ".dat"): # sep: 间隔符,header:首行是否为标题行dfFile = pd.read_table(readPath, sep=" ", header=0) # 间隔符为空格,首行为标题行# dfFile = pd.read_table(filePath,sep=",",header=None) # 间隔符为逗号,无标题行else:print("不支持的文件格式。")except Exception as e:print("读取数据文件失败:{}".format(str(e)))returnreturn dfFiledata=readDataFile('C:/Users/lenovo/Desktop/lut.xlsx')
print(data)
NIR=data['nir']
R=data['r']
list=[]
for i in range(len(data)):ndvi=(NIR[i]-R[i])/(NIR[i]+R[i])list.append(ndvi)print(list)tableAll = op.load_workbook(filePath)
table1 = tableAll['lut']
for i in range(len(list)):table1.cell(i+2, 11, list[i])
tableAll.save(filePath)
结果

注意
1、把红波段和近红波段的列名从数字改为字符r和nir,因为pd的[‘’]索引方式好像不支持数字。
2、openpyxl库只支持.xlsx格式的数据
3、cell函数行列索引从1开始
代码注释
1、tableAll = op.load_workbook(filePath)
使用openpyxl库中的load_workbook()方法来打开指定路径下的工作簿文件,并将其赋值给变量tableAll。其中op是openpyxl库的别名或者导入的模块。
2、table1 = tableAll[‘lut’]
打开工作簿文件的sheet,根据自己的sheet_name来改

3、table1.cell(i+2, 11, list[i])
cell函数第一个元素为指定行,第二个为指定列,最后一个为待写入的数据。注意此时行和列的索引都是从1开始的,与dataframe,len(),range()等等python常见的索引都是从0开始不同。
相关文章:
操作EXCEL计算3万条数据的NDVI并填入
Python操作EXCEL,计算3万条数据的NDVI并填入 问题描述 现在是有构建好了的查找表,不过构建了3万条数据,在excel中手动计算每行的NDVI值太麻烦了,也不会操作。 就试试python吧,毕竟python自动处理大型EXCEL数据很方便…...
Linux服务器安装Anaconda 配置远程jupyter lab使用虚拟环境
参考的博客: Linux服务器安装Anaconda 并配置远程jupyter lab anaconda配置远程访问jupyter,并创建虚拟环境 理解和创建:Anaconda、Jupyterlab、虚拟环境、Kernel 下边是正文了。 https://www.anaconda.com/download是官网网址,可…...
R语言实现随机生存森林(3)
常见问题解答 1、计算C指数 1-Error rate,或者 rsf.err <- get.cindex(yvar$Survival_months,yvar$OS,predictedrf.grow$predicted) 2、模型中predicted和predicted.oob区别 predicted和predicted.oob是两个不同的属性,它们分别表示模型的预测结果…...
WebPack-打包工具
从图中我们可以看出,Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求. 下面举个例子 : main.js 我们只命名导出一个变量 export const name"老六"index.js import { name } from "./tset/…...
CISSP学习笔记:PKI和密码学应用
第七章 PKI和密码学应用 7.1 非对称密码学 对称密码系统具有共享的秘钥系统,从而产生了安全秘钥分发的问题非对称密码学使用公钥和私钥对,无需支出复杂密码分发系统 7.1.1 公钥与私钥 7.1.2 RSA(兼具加密和数字签名) RSA算法…...
简述Java21新特性
Java21新特性 你发任你发我用Java8 不管Java更新了多少版本,我还是用Java8,因为在很多框架不知道支持不支持Java21,而且因为很多Jar包的版本冲突问题,所以我还是用Java8,但是对于新技术的了解是非常必要的。 Java 21是新推出的长…...
Composition API(常用部分)
1. Composition API(常用部分) 文档: https://composition-api.vuejs.org/zh/api.html 1) setup 新的option, 所有的组合API函数都在此使用, 只在初始化时执行一次函数如果返回对象, 对象中的属性或方法, 模板中可以直接使用2) ref 作用: 定义一个数据的响应式语法: cons…...
驱动插入中断门示例代码
驱动插入中断描述符示例代码 最近做实验,每次在应用层代码写测试代码的时候都要手动挂一个中断描述符,很不方便所以就想着写个驱动挂一个中断门比较省事 驱动测试效果如下: 下面的代码是个架子,用的时候找个驱动历程传递你要插…...
1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning
2022CIKM 1 intro 1.1 背景 轨迹相似度计算是轨迹分析任务(相似子轨迹搜索、轨迹预测和轨迹聚类)最基础的组件之一现有的关于轨迹相似度计算的研究主要可以分为两大类: 传统方法 DTW、EDR、EDwP等二次计算复杂度O(n^2)缺乏稳健性 会受到非…...
如何做一个基于 Python 的搜索引擎?
怎么做一个基于 python 的搜索引擎? 1、确定搜索引擎范围和目标用户 在决定做一个基于Python的搜索引擎之前,首先需要确定搜索引擎的范围和目标用户。搜索引擎的范围可以包括新闻、商品、音乐等,不同的领域需要不同的数据来源和处理方式。同…...
Python报错:KeyError: ‘820‘
Python报错:KeyError: ‘820’ 问题描述 原因 操作的表格列名是数字 NIRdata[820] Rdata[630]以上是出错行,dataframe的这种索引方式不支持用数字。 解决方案 先修改列名为字符 然后将出错行改为对应列名 NIRdata[nir] Rdata[r]...
【kubernetes】kubernetes中的Deployment使用
1 Why need Deployment? K8S中Pod是用户管理工作负载的基本单位,Pod通常通过Service进行暴露,因此,通常需要管理一组Pod,RC和RS主要就实现了一组Pod的管理工作,其中,RC和RS的区别在于,RS提供更…...
百度2024校招机器学习、数据挖掘、自然语言处理方向面试经历
本文介绍2024届秋招中,百度的机器学习/数据挖掘/自然语言处理工程师岗位一面的面试基本情况、提问问题、代码题目等。 8月初参与了百度提前批的机器学习/数据挖掘/自然语言处理工程师岗位面试,所在部门是搜索方向的。一面结束之后就知道凉了,…...
RabbitMQ原理(二):SpringAMQP编程
文章目录 3.SpringAMQP3.1.导入Demo工程3.2.快速入门3.1.1.消息发送3.1.2.消息接收3.1.3.测试3.3.WorkQueues模型3.3.1.消息发送3.3.2.消息接收3.3.3.测试3.3.4.能者多劳3.3.5.总结3.4.交换机类型3.5.Fanout交换机3.5.1.声明队列和交换机3.5.2.消息发送3.5.3.消息接收3.5.4.总结…...
什么是SQL注入(SQL Injection)?如何预防它
什么是 SQL 注入(SQL Injection)?如何预防它? SQL注入(SQL Injection)是一种常见的网络安全漏洞,攻击者通过在应用程序的输入中插入恶意SQL代码来执行未经授权的数据库操作。SQL注入攻击可能导…...
metrology
创建模型:create_metrology_model 设置图像大小:set_metrology_model_image_size 添加测量模型:add_metrology_object_rectangle2_measure 设置对象参数:set_metrology_object_param 设置模型参数:set_metrology_model…...
UE学习记录06----根据Actor大小自适应相机位置
背景: staticMesh 会根据业务需要随时变化,然后通过staticMesh的大小自适应相机位置,捕捉画面用来预览该模型,使模型在画布中不会太大导致显示不全,也不会太小 参考: UE实现相机聚焦物体功能_右弦GISer的…...
Go-Python-Java-C-LeetCode高分解法-第八周合集
前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 本文部分内容来自网上搜集与个人实践。如果任何信息存在错误,欢迎…...
数据结构--并查集
一、并查集的概念 并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。 最裸并查集: 合并元素a和元素b 所在的集合。查询元素a和元素b 是否属于同一组。是否在一个…...
Leetcode 224. 基本计算器
文章目录 题目代码(10.1 首刷看解析) 题目 Leetcode 224. 基本计算器 代码(10.1 首刷看解析) class Solution { public:int calculate(string s) {stack<int> sk; // 存储正负号sk.push(1);int sign 1;int res 0;int i…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
