首页 > 编程语言 >Python自动筛选、删除Excel不处于给定区间的数据

Python自动筛选、删除Excel不处于给定区间的数据

时间:2023-10-10 23:05:35浏览次数:36  
标签:Python dif Excel df 给定 result NDVI inf 筛选

  本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法。

  首先,我们来明确一下本文的具体需求。现有一个Excel表格文件(在本文中我们就以.csv格式的文件为例),如下图所示。

  其中,Excel表格文件具有大量的数据,每一列表示某一种属性每一行表示某一个样本;我们需要做的,就是对于其中的部分属性加以数据筛选——例如,我们希望对上图中第一列的数据进行筛选,将其中大于2或小于-1的部分选出来,并将每一个所选出的单元格对应的直接删除;同时,我们还希望对其他的属性同样加以筛选,不同属性筛选的条件也各不相同,但都是需要将不符合条件的单元格所在的整行都删除。最终,我们保留下来的数据,就是符合我们需要的数据,此时我们需要将其保存为一个新的Excel表格文件。

  明白了需求,我们即可开始代码的撰写;本文用到的具体代码如下所示。

# -*- coding: utf-8 -*-
"""
Created on Wed Jun  7 15:40:50 2023

@author: fkxxgis
"""

import pandas as pd

original_file = "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/23_Train_model_NoH/Train_Model_1_NoH.csv"
result_file = "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/23_Train_model_NoH/Train_Model_1_NoH_New.csv"

df = pd.read_csv(original_file)

df = df[(df["inf"] >= -0.2) & (df["inf"] <= 18)]
df = df[(df["NDVI"] >= -1) & (df["NDVI"] <= 1)]
df = df[(df["inf_dif"] >= -0.2) & (df["inf_dif"] <= 18)]
df = df[(df["NDVI_dif"] >= -2) & (df["NDVI_dif"] <= 2)]
df = df[(df["soil"] >= 0)]
df = df[(df["inf_h"] >= -0.2) & (df["inf_h"] <= 18)]
df = df[(df["ndvi_h"] >= -1) & (df["ndvi_h"] <= 1)]
df = df[(df["inf_h_dif"] >= -0.2) & (df["inf_h_dif"] <= 18)]
df = df[(df["ndvi_h_dif"] >= -1) & (df["ndvi_h_dif"] <= 1)]

df.to_csv(result_file, index = False)

  下面是对上述代码每个步骤的解释:

  1. 导入必要的库:导入了pandas库,用于数据处理和操作。
  2. 定义文件路径:定义了原始文件路径original_file和结果文件路径result_file
  3. 读取原始数据:使用pd.read_csv()函数读取原始文件数据,并将其存储在DataFrame对象df中。
  4. 数据筛选:对DataFrame对象df进行多个条件的筛选操作,使用了逻辑运算符&和比较运算符进行条件组合。例如,其中的第一行df["inf"] >= -0.2df["inf"] <= 18就表示筛选出"inf"列的值在-0.218之间的数据;第二行df["NDVI"] >= -1df["NDVI"] <= 1则表示筛选出"NDVI"列的值在-11之间的数据,以此类推。
  5. 保存结果数据:使用to_csv()函数将筛选后的DataFrame对象df保存为新的.csv文件,保存路径为result_file,并设置index=False以避免保存索引列。

  当然,如果我们需要对多个属性(也就是多个列)的数据加以筛选,除了上述代码中的方法,我们还可以用如下所示的代码,较之前述代码会更方便一些。

result_df = result_df[(result_df["blue"] > 0) & (result_df["blue"] <= 1) &
                              (result_df["green"] > 0) & (result_df["green"] <= 1) &
                              (result_df["red"] > 0) & (result_df["red"] <= 1) &
                              (result_df["inf"] > 0) & (result_df["inf"] <= 1) &
                              (result_df["NDVI"] > -1) & (result_df["NDVI"] < 1) &
                              (result_df["inf_dif"] > -1) & (result_df["inf_dif"] < 1) &
                              (result_df["NDVI_dif"] > -2) & (result_df["NDVI_dif"] < 2) &
                              (result_df["soil"] >= 0) &
                              (result_df["NDVI_dif"] > -2) & (result_df["NDVI_dif"] < 2) &
                              (result_df["inf_h_dif"] > -1) & (result_df["inf_h_dif"] < 1) &
                              (result_df["ndvi_h_dif"] > -1) & (result_df["ndvi_h_dif"] < 1)]

  上述代码可以直接对DataFrame对象加以一次性的筛选,不用每筛选一次就保存一次了。

  运行本文提及的代码,我们即可在指定的结果文件夹下获得数据筛选后的文件了。

  至此,大功告成。

标签:Python,dif,Excel,df,给定,result,NDVI,inf,筛选
From: https://blog.51cto.com/fkxxgis/7800122

相关文章

  • # yyds干货盘点 #盘点一个Python自动化办公Excel数据填充实战案例(下篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公的问题,一起来看看吧。上一篇【论草莓如何成为冻干莓】大佬给出的方法太深奥了,粉丝没有看懂,这一篇文章,一起来围观大佬在粉丝的代码基础上进行修改出正确的代码。二、实现过程这里是【论草莓......
  • python读取excel测试用例数据
     #excel_readUtil.pyfromopenpyxlimportload_workbookimportpandasclassHandleExcel:"""封装excel文件处理类"""def__init__(self,filename,sheetname=None):"""定义构造方法:p......
  • PythonDay1
    编译型:如谷歌翻译器,英汉互译       解释型:如外交官一对一翻译python解释器下载官网:https://www.pyhton.org ---------Downloads(版本选择)  注释: ......
  • 记录python语言的数组去重并输出
    deffind_duplicates(arr):seen=set()duplicates=[]fornuminarr:ifnuminseen:duplicates.append(num)seen.add(num)returnduplicatesarr=['1000223453','1000227458','1000223......
  • python查找替换危险字符脚本
    为了沃滴好大儿的大创写了这么个脚本代码如下:1importio2importbase6434defreplace_dangerous_sequences(image_path):5try:6#读取图像文件的内容7withopen(image_path,'rb')asimage_file:8image_data=image_......
  • python计算 ico hash 值
    apt-getinstallpython3apt-getinstallpython3-pippipinstallmmh3importrequestsimportbase64importmmh3URL='https://www.baidu.com/favicon.ico'r=requests.get(URL)r1=r.contentr2=base64.encodebytes(r1)r3=mmh3.hash(r2)print('http.fav......
  • Python 常见排序:冒泡、选择、快速
    简单说明:1.冒泡排序:双层循环,交替结果2.选择排序:whilenums,假设第一个值为做小,通过for循环找到最小值以此来替换,再将nums中该值去掉继续上述步骤3.快速排序:定义一个初值,把整个数据列表分为两部分,再递归代码实现:#冒泡排序defaction1(n):foriinrange(len(n)):......
  • 【python】魔术方法大全(四)——类构建篇
    这期我们来聊聊和class建立有关的魔术方法。__init_subclass__魔术方法__init_subclass__是Python3.6新增的一个特殊方法,用于定义一个类(基类)被继承时所执行的逻辑。当一个类被定义为另一个类(基类)的子类时,它会自动调用__init_subclass__方法。__init_subclass__方法定义......
  • Python并发及网络编程进阶
    案例引入假如你们一家已上市的电商公司,在元旦来临前夕,领导需要你模拟用户,通过接口生成10万笔新订单。你该如何处理?方案探索串行:多个任务逐个执行的过程,上个任务执行完成前,阻塞下一个任务执行。并发:多个任务交替执行的过程,这些任务可能在同一时间段内执行,但是它们的执行时......
  • cpsc 103 python基本前提
    python基本知识基本运算符1.(**)是次方ex:2**3evaluatesto(2tothepowerof3)82.(%)是求余数ex:15%4evaluatestobecausetheremainderwhendividing15by4is33基本运算规则1.str乘以数字ex:'hello'*2evalutesto'hellohello'2.[a......