欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python找出多個(gè)Excel文件中缺失數(shù)據(jù)行數(shù)多的文件

 更新時(shí)間:2025年01月09日 08:24:51   作者:瘋狂學(xué)習(xí)GIS  
這篇文章主要為大家詳細(xì)介紹了如何使用Python找出多個(gè)Excel文件中缺失數(shù)據(jù)行數(shù)多的文件,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下

本文介紹基于Python語言,針對一個(gè)文件夾下大量的Excel表格文件,基于其中每一個(gè)文件內(nèi)、某一列數(shù)據(jù)的特征,對其加以篩選,并將符合要求不符合要求的文件分別復(fù)制到另外兩個(gè)新的文件夾中的方法。

首先,我們來明確一下本文的具體需求?,F(xiàn)有一個(gè)文件夾,其中有大量的Excel表格文件(在本文中我們就以csv格式的文件為例);如下圖所示。

其中,每一個(gè)Excel表格文件都有著如下圖所示的數(shù)據(jù)格式。

如上圖所示,各個(gè)文件都有著這樣的問題——有些行的數(shù)據(jù)是無誤的,而有些行,除了第一列,其他列都是0值。因此,我們希望就以第2列為標(biāo)準(zhǔn),找出含有0值數(shù)量低于或高于某一閾值的表格文件——其中,0值數(shù)量多,肯定不利于我們的分析,我們將其放入一個(gè)新的文件夾;而0值數(shù)量少的,我們才可以對這一表格文件加以后續(xù)的分析,我們就將其放入另一個(gè)新的文件夾中。因此,計(jì)算出每一個(gè)表格文件對應(yīng)的的0值數(shù)量百分比后,我們就進(jìn)一步將這一Excel表格文件復(fù)制到對應(yīng)的文件夾內(nèi)。

知道了需求,我們就可以開始代碼的撰寫。其中,本文用到的代碼如下所示。

# -*- 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)

其中,上述代碼是一個(gè)篩選并復(fù)制文件的函數(shù)。該函數(shù)的目的是根據(jù)給定的閾值將具有不同缺失率的文件從一個(gè)文件夾復(fù)制到另外兩個(gè)文件夾。

在代碼中,filter_copy_files函數(shù)接受四個(gè)參數(shù):

  • original_path:原始文件夾的路徑,其中包含要篩選的.csv文件。
  • useful_path:有用文件的目標(biāo)文件夾路徑,將滿足閾值要求(也就是0值數(shù)量低于閾值)的文件復(fù)制到此處。
  • useless_path:無用文件的目標(biāo)文件夾路徑,將不滿足閾值要求(也就是0值數(shù)量高于閾值)的文件復(fù)制到此處。
  • threshold:閾值,用于確定文件的缺失率是否滿足要求。

函數(shù)首先使用os.listdir獲取原始文件夾中的所有文件名,然后遍歷每個(gè)文件名。對于以.csv結(jié)尾且為文件的文件,函數(shù)使用pd.read_csv讀取.csv文件,并通過df.iloc[:, 1]獲取第2列的值。

接下來,函數(shù)計(jì)算第2列中為零的元素?cái)?shù)量,并通過將其除以列的總長度來計(jì)算缺失率。根據(jù)閾值判斷缺失率是否滿足要求。

如果缺失率小于閾值,函數(shù)將文件復(fù)制到useful_path目標(biāo)文件夾中,使用shutil.copy函數(shù)實(shí)現(xiàn)復(fù)制操作。否則,函數(shù)將文件復(fù)制到useless_path文件夾中。

最后,我們調(diào)用了filter_copy_files函數(shù),并傳遞了相應(yīng)的參數(shù)來執(zhí)行文件篩選和復(fù)制操作。

運(yùn)行上述代碼,我們即可在對應(yīng)的文件夾中看到文件。如下圖所示,0值數(shù)量低于閾值的表格文件都復(fù)制到了這個(gè)LowMissingRate文件夾中,我們即可對其加以后續(xù)處理;而那些0值數(shù)量高于閾值的表格文件,就放到另一個(gè)HighMissingRate文件夾中了。

到此這篇關(guān)于使用Python找出多個(gè)Excel文件中缺失數(shù)據(jù)行數(shù)多的文件的文章就介紹到這了,更多相關(guān)Python找出缺失數(shù)據(jù)行數(shù)多的Excel文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論