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

news/2025/1/8 21:28:38/文章来源:https://www.cnblogs.com/fkxxgis/p/18660643

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

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

image

  其中,每一个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 pddef 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文件夹中了。

  至此,大功告成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866084.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【模拟电子技术】02-PN结的形成

【模拟电子技术】02-PN结的形成半导体就是导电能力介于导体和半导体之间的东西, 本征半导体即纯净的半导体。导电靠自由电子,可看到自由电子即使是本征激发也少,导电能力也不够。自由电子撞在空穴中,就是复合(与本征激发相反),两者发生的频率决定着载流子的浓度,其实是…

【字符串排序】C#和前端js排序问题

前言 前端请求时做了个参数验证,就是简单的计算md5,但是与后端计算的结果始终不一致 发现是前后端对字符串排序的默认规则有区别 测试代码 前端 1、示例代码,可以在浏览器的控制台中直接运行e=["","你","1","a","d",&quo…

C# 调用YoloSharp.Gpu,调用Microsoft.ML.OnnxRuntime.Gpu出错126

今天使用C#调用YoloSharp.Gpu,加载onnx模型,然后检测,代码很简单。 // Load the YOLO predictor predictor ??= new YoloPredictor(@"path to your.onnx");// Run model var result = predictor.Detect(@"path to your image");一运行就爆错ONNXRunti…

charls 安卓apk抓包证书配置

一:证书制作 将证书保存到本地:charles.pem OpenSSL签发证书制作: 安装openssl方法 打开网址,https://slproweb.com/products/Win32OpenSSL.html openssl x509 -subject_hash_old -in d:\CA\charles.pem修改文件 2bd25718.0(后缀名为0)二:证书导入 模拟器设置可写入 …

第十九次作业

1、安装fortify并以pikachu靶场为目标进行练习熟练使用fortify 安装安装后复制fortify-common-23.2.0.0023: 将fortify-common-23.2.0.0023.jar⽂件分别将下⾯路径的⽂件覆盖 C:\Program Files\Fortify\Fortify_Apps_and_Tools_23.2.0\Core\lib C:\Program Files\Fortify\Fort…

mongodb windows zip安装并服务自启动

1.下载并解压。2.新建文件/文件夹 data/db 目录 logs/mongod.log 文件 conf/mongod.conf 文件 3.编辑conf/mongod.conf文件 systemLog:destination: filelogAppend: truepath: F:/mongodb-win32-x86_64-windows-6.0.20-rc3/logs/mongod.logstorage:dbPath: F:/mongodb-win32-x…

Linux通过端口找到对应的服务

首先执行netstat -tulnp | grep <端口号>例如:netstat -tulnp | grep :80参数解释:-t: 显示 TCP 连接(只显示TCP协议的端口信息)。 -u: 显示 UDP 连接(只显示UDP协议的端口信息)。 -l: 显示正在监听(Listening)状态的端口(只显示处于监听状态的端口)。 -n: 以数…

2025新春源码免费送

我们常常在日常生活中感到时间过得异常缓慢,仿佛未来遥不可及。然而,当我们回过头去审视过去,才发现时间早已悄然溜走,许多曾经等待的日子已经过去。时间总是在不经意间流逝,让人意识到它的宝贵和不可逆转。 尽管如此,我们依然应对未来保持从容的态度。生活充满了无数的可…

2025.1.8 鲜花

Nim 的变种Nim 的变种グランドエスケープ 空飛ぶ羽根と引き換えに 繋ぎ合う手を選んだ僕ら 没有选择飞翔的翅膀 而是选择十指相扣的我们 それでも空に魅せられて 夢を重ねるのは罪か 却仍然向往着天空 反复做着同样的梦 这有错吗 夏は秋の背中を見て その顔を思い浮かべる 夏…

CTF 之 Crypto (Cryptography) 学习笔记

CTF 之 Crypto (Cryptography) Chapter 0. 前置知识 群 (Group) 给定一个集合 \(G\neq \emptyset\) 以及二元代数运算 \(\circ\),若满足:封闭性 (Closure):\(\forall u,v\in G\),\(u\circ v\in G\); 结合律 (Associativity):\(\forall u,v,w\in G\),\((u\circ v)\circ w…

(2025自测有效!)全网最好的python配置教程【非常非常适合小白】

前几天我的电脑刚刚重装,把python重新配置了一下。 1.Python环境部署Python3 可应用于多平台包括 Windows、Linux 和 Mac OS X。 Python官网:https://www.python.org/ 进入官网在导航栏选择Dowmloads,选择所使用的系统(以Windows为例) 进入Windows下载页之后选择需要下载的…