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

如何用Python将EMNIST的CSV逐行转为分类存储的PNG文件?

解决方案

下面是将EMNIST CSV格式数据集转换为指定目录结构PNG文件的Python实现方案,包含完整代码和关键细节说明:

第一步:安装依赖库

首先安装处理所需的工具库:

pip install pandas numpy pillow

第二步:完整转换代码

import os
import pandas as pd
import numpy as np
from PIL import Image

def convert_emnist_csv_to_png(csv_path, output_root, dataset_type):
    # 创建根目录结构:{输出根目录} > {数据集名称} > {训练集/测试集}
    dataset_name = "EMNIST"
    base_output_dir = os.path.join(output_root, dataset_name, dataset_type)
    os.makedirs(base_output_dir, exist_ok=True)

    # 分块读取CSV(避免大文件占满内存)
    chunk_size = 1000
    for chunk_idx, chunk in enumerate(pd.read_csv(csv_path, chunksize=chunk_size)):
        for row_idx, row in chunk.iterrows():
            # 提取类别标签和像素数据
            class_label = str(row.iloc[0])
            pixels = row.iloc[1:].values.reshape(28, 28)
            
            # 关键:EMNIST的像素存储是转置的,需要调整方向才能得到正确图像
            pixels = np.transpose(pixels)
            
            # 创建类别文件夹
            class_dir = os.path.join(base_output_dir, class_label)
            os.makedirs(class_dir, exist_ok=True)
            
            # 生成唯一文件名(避免重复)
            filename = f"img_{chunk_idx}_{row_idx}.png"
            img_path = os.path.join(class_dir, filename)
            
            # 转换为Image对象并保存
            img = Image.fromarray(pixels.astype(np.uint8))
            img.save(img_path)
        print(f"处理完第 {chunk_idx+1} 块数据")

# 配置参数
# 替换为你的CSV文件路径和输出根目录
train_csv_path = "emnist-balanced-train.csv"
test_csv_path = "emnist-balanced-test.csv"
output_root = "./"  # 程序目录,可根据需要修改

# 处理训练集
convert_emnist_csv_to_png(train_csv_path, output_root, "训练集")
# 处理测试集
convert_emnist_csv_to_png(test_csv_path, output_root, "测试集")

关键细节说明

  • 分块读取CSV:EMNIST数据集CSV文件较大,使用分块读取可以避免内存溢出,chunk_size可根据你的内存情况调整。
  • 图像方向修正:EMNIST的CSV像素数据是按列存储的,直接reshape会得到旋转90度的图像,所以需要用np.transpose转置修正方向。
  • 目录自动创建:使用os.makedirs(..., exist_ok=True)确保目录不存在时自动创建,存在时不会报错。
  • 文件名唯一性:通过块索引+行索引生成文件名,避免不同块中相同行索引导致的文件名冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:50:29