使用Python找出多个Excel文件中缺失数据行数多的文件

 更新时间:2025年01月09日 08:24:51   作者:疯狂学习GIS  
这篇文章主要为大家详细介绍了如何使用Python找出多个Excel文件中缺失数据行数多的文件,文中的示例代码讲解详细,需要的小伙伴可以参考一下

本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件内、某一列数据的特征,对其加以筛选,并将符合要求不符合要求的文件分别复制到另外两个新的文件夹中的方法。

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

其中,每一个Excel表格文件都有着如下图所示的数据格式。

如上图所示,各个文件都有着这样的问题——有些行的数据是无误的,而有些行,除了第一列,其他列都是0值。因此,我们希望就以第2列为标准,找出含有0值数量低于或高于某一阈值的表格文件——其中,0值数量多,肯定不利于我们的分析,我们将其放入一个新的文件夹;而0值数量少的,我们才可以对这一表格文件加以后续的分析,我们就将其放入另一个新的文件夹中。因此,计算出每一个表格文件对应的的0值数量百分比后,我们就进一步将这一Excel表格文件复制到对应的文件夹内。

知道了需求,我们就可以开始代码的撰写。其中,本文用到的代码如下所示。

# -*- coding: utf-8 -*-
"""
Created on Tue May 16 20:19:50 2023

@author: fkxxgis
"""

import os
import shutil
import pandas as pd

def filter_copy_files(original_path, useful_path, useless_path, threshold):
    original_all_file = os.listdir(original_path)
    for file in original_all_file:
        path = os.path.join(original_path, file)
        if file.endswith(".csv") and os.path.isfile(path):
            df = pd.read_csv(path)
            column_value = df.iloc[:, 1]
            zero_count = (column_value == 0).sum()
            zero_ratio = zero_count / len(column_value)
            
            if zero_ratio < threshold:
                new_path = os.path.join(useful_path, file)
                shutil.copy(path, new_path)
            else:
                new_path = os.path.join(useless_path, file)
                shutil.copy(path, new_path)

filter_copy_files("E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/13_AllYearAverage",
                  "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/14_PointSelection/LowMissingRate",
                  "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/14_PointSelection/HighMissingRate",
                  0.30)

其中,上述代码是一个筛选并复制文件的函数。该函数的目的是根据给定的阈值将具有不同缺失率的文件从一个文件夹复制到另外两个文件夹。

在代码中,filter_copy_files函数接受四个参数:

  • original_path:原始文件夹的路径,其中包含要筛选的.csv文件。
  • useful_path:有用文件的目标文件夹路径,将满足阈值要求(也就是0值数量低于阈值)的文件复制到此处。
  • useless_path:无用文件的目标文件夹路径,将不满足阈值要求(也就是0值数量高于阈值)的文件复制到此处。
  • threshold:阈值,用于确定文件的缺失率是否满足要求。

函数首先使用os.listdir获取原始文件夹中的所有文件名,然后遍历每个文件名。对于以.csv结尾且为文件的文件,函数使用pd.read_csv读取.csv文件,并通过df.iloc[:, 1]获取第2列的值。

接下来,函数计算第2列中为零的元素数量,并通过将其除以列的总长度来计算缺失率。根据阈值判断缺失率是否满足要求。

如果缺失率小于阈值,函数将文件复制到useful_path目标文件夹中,使用shutil.copy函数实现复制操作。否则,函数将文件复制到useless_path文件夹中。

最后,我们调用了filter_copy_files函数,并传递了相应的参数来执行文件筛选和复制操作。

运行上述代码,我们即可在对应的文件夹中看到文件。如下图所示,0值数量低于阈值的表格文件都复制到了这个LowMissingRate文件夹中,我们即可对其加以后续处理;而那些0值数量高于阈值的表格文件,就放到另一个HighMissingRate文件夹中了。

到此这篇关于使用Python找出多个Excel文件中缺失数据行数多的文件的文章就介绍到这了,更多相关Python找出缺失数据行数多的Excel文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python读写ini配置文件方法实例分析

    python读写ini配置文件方法实例分析

    这篇文章主要介绍了python读写ini配置文件方法,实例分析了Python针对ini配置文件的相关读写技巧,需要的朋友可以参考下
    2015-06-06
  • PyTorch基础之torch.nn.Conv2d中自定义权重问题

    PyTorch基础之torch.nn.Conv2d中自定义权重问题

    这篇文章主要介绍了PyTorch基础之torch.nn.Conv2d中自定义权重问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Django 联表查询操作方法

    Django 联表查询操作方法

    作为一个django使用的新手,在做练手项目中对联表查询感觉比较生疏,最近两天整理了一些连表查询应用场景和使用方法以及无法使用django中ORM操作的原生查询,对Django 联表查询操作感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • Python入门学习之Python流处理过程

    Python入门学习之Python流处理过程

    本篇文章属于Python入门篇,本文主要教大家学习Python流处理过程,通过Faust流处理库来为大家详细讲解,有需要的朋友可以借鉴参考下
    2021-09-09
  • Python 位置参数基础教程示例

    Python 位置参数基础教程示例

    这篇文章主要为大家介绍了Python 位置参数基础教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Python数据结构之栈、队列的实现代码分享

    Python数据结构之栈、队列的实现代码分享

    这篇文章主要介绍了Python数据结构之栈、队列的实现代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • 无惧面试,带你搞懂python 装饰器

    无惧面试,带你搞懂python 装饰器

    这篇文章主要介绍了python 装饰器的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • 如何通过安装HomeBrew来安装Python3

    如何通过安装HomeBrew来安装Python3

    这篇文章主要介绍了如何通过安装HomeBrew来安装Python3,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python实用库 PrettyTable 学习笔记

    Python实用库 PrettyTable 学习笔记

    这篇文章主要介绍了Python实用库 PrettyTable 学习笔记,结合实例形式分析了Python表格操作库PrettyTable的安装、使用技巧与相关注意事项,需要的朋友可以参考下
    2019-08-08
  • matplotlib绘制多子图共享鼠标光标的方法示例

    matplotlib绘制多子图共享鼠标光标的方法示例

    这篇文章主要介绍了matplotlib绘制多子图共享鼠标光标的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论