You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写通用代码,按变量类型差异化填充CSV缺失值?

批量CSV缺失值通用填充方案

核心思路

针对不同数据类型的列分别处理缺失值:

  • 数值型(int/float):填充-1
  • 字符型:填充'm'
  • 时间型(HH:MM格式):保留缺失值(不填充)

通过类型判断+时间格式校验,适配变量细节有差异的多份CSV文件。

完整代码

import pandas as pd
import os
from datetime import datetime

def is_time_format(s):
    """判断字符串是否为HH:MM格式的时间"""
    try:
        datetime.strptime(str(s), '%H:%M')
        return True
    except (ValueError, TypeError):
        return False

def batch_fill_missing_values(input_dir, output_dir):
    # 创建输出目录(不存在则自动创建)
    os.makedirs(output_dir, exist_ok=True)
    
    # 遍历输入目录下所有CSV文件
    for filename in os.listdir(input_dir):
        if not filename.endswith('.csv'):
            continue
            
        file_path = os.path.join(input_dir, filename)
        df = pd.read_csv(file_path)
        
        # 逐列处理缺失值
        for col in df.columns:
            non_null_vals = df[col].dropna()
            # 先判断是否为时间型列(采样验证格式)
            if len(non_null_vals) > 0:
                sample = non_null_vals.sample(min(10, len(non_null_vals)))
                if all(is_time_format(val) for val in sample):
                    continue  # 时间型列留空,跳过填充
            
            # 数值型列填充-1
            if pd.api.types.is_numeric_dtype(df[col]):
                df[col] = df[col].fillna(-1)
            # 字符型列填充'm'
            elif pd.api.types.is_object_dtype(df[col]):
                df[col] = df[col].fillna('m')
        
        # 保存处理后的文件
        output_path = os.path.join(output_dir, filename)
        df.to_csv(output_path, index=False)
        print(f"处理完成:{output_path}")

# 使用示例
if __name__ == "__main__":
    INPUT_DIR = "./input_csvs"  # 替换为你的输入CSV目录
    OUTPUT_DIR = "./filled_csvs"  # 替换为你的输出目录
    batch_fill_missing_values(INPUT_DIR, OUTPUT_DIR)

代码说明

  1. 时间格式校验:通过is_time_format函数判断字符串是否符合HH:MM格式,采用采样验证的方式提升大文件处理效率。
  2. 类型判断:利用pandas的is_numeric_dtype和is_object_dtype精准识别数值型和字符型列,避免误判。
  3. 批量处理:自动遍历指定目录下所有CSV文件,处理后保留原文件名保存到输出目录,无需手动逐个处理。
  4. 兼容性:适配变量细节有差异的CSV文件,无需提前指定列名或类型。

内容的提问来源于stack exchange,提问作者Peter Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:01:21