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

如何将Pandas/Numpy语句封装为Python函数批量处理多数据集?

可行的自动化处理方法

针对你在Jupyter Notebook中重复处理相似数据集的需求,以下是几种实用的封装方法:

1. 基础函数封装(最直接)

把重复执行的读取、查看、排序步骤打包成一个函数,通过参数传入文件路径和排序列名,同时保留数据预览和列名查看的环节:

import pandas as pd

def process_dataset(file_path, sort_col):
    # 读取数据集
    data = pd.read_csv(file_path, low_memory=False)
    # Jupyter中用display展示表格更美观
    print("数据前5行:")
    display(data.head())
    # 打印列名列表
    print("数据集列名:")
    print(list(data.columns))
    # 执行排序
    data_new = data.sort_values(by=sort_col)
    return data_new

使用时直接调用即可:

# 处理test.csv
processed_test = process_dataset(r"/d/newfolder/test.csv", "column_name")
# 处理另一组数据集
processed_data2 = process_dataset(r"/d/newfolder/data2.csv", "target_column")

2. 批量处理多数据集

如果有一堆同格式的数据集要处理,可以写批量处理函数,一次性处理所有文件并返回结果字典(用文件名作为键):

def batch_process_datasets(file_paths, sort_col):
    processed_datasets = {}
    for path in file_paths:
        # 提取文件名作为字典键(去掉路径和后缀)
        file_name = path.split("/")[-1].split(".")[0]
        processed_datasets[file_name] = process_dataset(path, sort_col)
    return processed_datasets

使用示例:

# 定义要处理的文件路径列表
file_list = [
    r"/d/newfolder/test.csv",
    r"/d/newfolder/data1.csv",
    r"/d/newfolder/data2.csv"
]
# 批量处理
all_processed = batch_process_datasets(file_list, "column_name")
# 访问某一个处理后的数据集
all_processed["test"].head()

3. 带可选参数的灵活封装

如果部分数据集需要特殊读取参数(比如编码、分隔符),可以给函数添加可选参数,适配不同场景:

def process_dataset(file_path, sort_col, low_memory=False, encoding="utf-8", sep=","):
    data = pd.read_csv(file_path, low_memory=low_memory, encoding=encoding, sep=sep)
    print("数据前5行:")
    display(data.head())
    print("数据集列名:")
    print(list(data.columns))
    data_new = data.sort_values(by=sort_col)
    return data_new

比如处理带中文的数据集时指定编码:

processed_chinese_data = process_dataset(r"/d/newfolder/chinese_data.csv", "name", encoding="gbk")

4. 类封装(适合复杂流程扩展)

如果后续要添加更多处理步骤(比如缺失值填充、特征工程),用类封装更便于维护和扩展:

class DatasetProcessor:
    def __init__(self, low_memory=False, encoding="utf-8"):
        self.low_memory = low_memory
        self.encoding = encoding
    
    def load_data(self, file_path):
        self.data = pd.read_csv(file_path, low_memory=self.low_memory, encoding=self.encoding)
        return self.data
    
    def inspect_data(self):
        print("数据前5行:")
        display(self.data.head())
        print("数据集列名:")
        print(list(self.data.columns))
        print("数据基本信息:")
        self.data.info()
    
    def sort_data(self, sort_col):
        self.processed_data = self.data.sort_values(by=sort_col)
        return self.processed_data
    
    def process(self, file_path, sort_col):
        self.load_data(file_path)
        self.inspect_data()
        return self.sort_data(sort_col)

使用示例:

# 初始化处理器,指定编码
processor = DatasetProcessor(encoding="gbk")
# 处理数据集
processed_data = processor.process(r"/d/newfolder/test.csv", "column_name")

内容的提问来源于stack exchange,提问作者The Weighted Tooth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:55:20