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

server/2025/1/18 12:00:30/

 本文介绍基于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文件夹中了。

  至此,大功告成。

  

   关注灵活就业新业态,关注公账号:贤才宝(贤才宝https://www.51xcbw.com)


http://www.ppmy.cn/server/159349.html

相关文章

学习AI大模型的小白入门建议和具体的学习方法推荐

深度思考我是一名在汽车行业工作的嵌入式系统工程师,现在我想进入人工智能领域,特别是大型语言模型。说到人工智能,我是一个完全的新手,所以我需要弄清楚从哪里开始。让我们把它分解一下。 首先,我知道嵌入式系统涉及许多低级编程、微控制器、实时操作系统等。人工智能,…

Open FPV VTX开源之ardupilot配置

Open FPV VTX开源之ardupilot配置 1. 源由2. 配置3. 总结4. 参考资料5. 补充5.1 飞控固件版本5.2 配置Ardupilot的BF OSD5.3 OSD偏左问题 1. 源由 飞控嵌入式OSD - ardupilot配置使用ardupliot配套OSD图片。 Choose correct font depending on Flight Controller SW. ──>…

uniapp小程序开发,配置开启小程序右上角三点的分享功能

直接全局配置一个分享的功能&#xff0c;要不然需要一个一个页面去单独配置就太麻烦了&#xff01;&#xff01;&#xff01; 1.新建一个share.js文件&#xff0c;并配置代码&#xff0c;调用onShareMessage()和onShareTimeline()两个函数。 其中&#xff1a; title&#xff1…

ctfshow复现2024ciscn第一场web

2024ciscn第一场 本章内容均在ctfshow复现 图片若显示失败请参考我的blog&#x1f447; ddl08.github.io sanic python污染 源码 from sanic import Sanic from sanic.response import text, html from sanic_session import Session import pydash # pydash5.1.2 ​ ​…

HBase的安装和配置

一、实验目的 1. 理解HBase的基本架构和工作原理。 2. 掌握HBase的安装和配置流程。 3. 学习如何将HBase从单机模式配置为伪分布式模式。 二、实验环境准备 1. JAVA环境准备&#xff1a;确保Java Development Kit (JDK) 已安装并配置好环境变量。 2. Hado…

探秘Node.js模块Modules:从入门到精通

文章目录 一、引言二、Node.js 模块初相识2.1 模块的概念与意义2.2 模块的类型 三、Node.js 模块的使用方法3.1 核心模块的调用3.2 文件模块的创建与运用3.2.1 创建自定义模块3.2.2 引入自定义模块 3.3 ES Modules 的运用3.3.1 启用 ES Modules3.3.2 导入导出规则 四、node_mod…

树形动态规划

树是一种特殊的图&#xff0c;一般用链式前向星存储。 456不打acm遇不到&#xff0c;先不加以说明 做题步骤&#xff1a; 洛谷P1352 #include<iostream> #include<vector> using namespace std; #define maxn 6005 int n, l, k; int r[maxn]; bool v[maxn];//找父…

Flutter ListView进阶:如何实现根据索引值滚动到列表特定位置

在Flutter开发中&#xff0c;ListView是一个非常常用的组件&#xff0c;它允许我们展示一系列的项目。然而&#xff0c;有时候我们需要根据特定的索引值滚动到ListView中的某个项目位置&#xff0c;以便提供更好的用户体验。本文将详细介绍如何在Flutter中实现这一功能。 一、…