首页 > 编程语言 >Python筛选多个Excel中数据缺失程度最少的文件

Python筛选多个Excel中数据缺失程度最少的文件

时间:2023-11-01 22:34:23浏览次数:33  
标签:复制到 文件 阈值 Python Excel 文件夹 path 筛选 copy

  本文介绍基于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,文件夹,path,筛选,copy
From: https://blog.51cto.com/fkxxgis/8133413

相关文章

  • python实现定时器产生随机数
    【精选】python实现定时器_python定时器-CSDN博客参考的这位博主的python定时器题目长这样:编写一个程序从1~20里随机产生3个数每过5秒加一次,连续加三次后输出结果,下面是代码#-*-coding:utf-8-*-importthreadingimporttimeimportrandomcancel_tmr=Falsecount=0......
  • Python JSON 使用指南:解析和转换数据
    JSON是一种用于存储和交换数据的语法。JSON是文本,使用JavaScript对象表示法编写。Python中的JSONPython有一个内置的json包,可用于处理JSON数据。示例:导入json模块:importjson解析JSON-从JSON转换为Python如果您有一个JSON字符串,可以使用json.loads()......
  • 【python爬虫】80页md笔记,0基础到scrapy项目高手,第(3)篇,requests网络请求模块详解
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。完整版笔记直接地址:请移步这里共8章,37子模块,总计56668字requests模块本阶段本文主要学习requests这......
  • Python47days
    overflow溢出属性visible默认值。内容不会被修剪,会呈现在元素框之外。hidden 内容会被修剪,并且其余内容是不可见的。scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。●overflow(水平和垂直均......
  • python基础-变量、常量
    变量什么是变量?顾名思义,变量就是可以变化的量,例如人们的年龄,存款等,都会因为某些因素而发生改变变量的定义、原理与使用:变量的定义由三部分组成:变量名("相当于一个名称")、赋值号("用=来表示,作用是将=右边的东西赋值给左边")和值("用来记录事物的状态")name="pslsy......
  • python实现打砖块小游戏
    importpygameimportsysimportrandom#初始化pygamepygame.init()#设置屏幕大小screen_width=800screen_height=600screen=pygame.display.set_mode((screen_width,screen_height))#设置颜色white=(255,255,255)black=(0,0,0)#设置球和砖块的......
  • Python selenium Chrome下载文件并设置下载路径
    PythonseleniumChrome下载文件并设置下载路径具体代码如下:importosimporttimefromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydown_path="D:\\Temp"chrome_options=webdriver.ChromeOptions()diy_prefs={......
  • Python:报错——ModuleNotFoundError: No module named 'encodings'
    运行Python报错:FatalPythonerror:Py_Initialize:unabletoloadthefilesystemcodecModuleNotFoundError:Nomodulenamed'encodings' 处理步骤:1.Files>>>Setting>>>Project>>>PythonInterpreter >>>AddInterpret......
  • ExcelToDatabase:批量导入Excel到数据库的自动化工具
    ExcelToDatabase:批量导入Excel到数据库的自动化工具点此下载最新版本支持8种主流数据库简介ExcelToDatabase是一个可以批量导入excel(xls/xlsx/xlsm/csv/txt)到数据库(mysql/oracle/sqlserver/postgresql/access/hive/sqlite/达梦)的自动化工具。自动化是其最大的特点,因为它可以根据e......
  • 一键导入excel到数据库
    一键导入excel到数据库摘要:工作中我们经常需要将excel数据导入到数据库(比如mysql,sqlserver,oracle)进行数据分析处理。通常我们会用像navicate等数据库工具或者数据库自带的编辑器中的excel导入功能手工导入,但是不管是专业还是非专业的数据处理人员,要正确导入一张excel到数据库并非......