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

如何将纯图像数据集转换为包含文件路径和标签的DataFrame?

解决图像数据集转DataFrame(含文件路径和标签)的问题

方法一:利用sklearn的load_files正确构造DataFrame

sklearn的load_files返回的是Bunch对象,内置filenames(文件路径)、target(标签索引)、target_names(标签名称)等属性,直接提取这些属性即可构造符合需求的DataFrame:

完整代码示例

import pandas as pd
from sklearn.datasets import load_files

# 加载数据集(替换为你的实际路径)
data = load_files("path/to/your/image_dataset")

# 构造包含文件路径和标签的字典
df_dict = {
    "file_path": data.filenames,
    # 直接映射为标签名称,也可保留label_index字段存储数字索引
    "label": [data.target_names[idx] for idx in data.target]
}

# 转换为DataFrame
image_df = pd.DataFrame(df_dict)

# 查看前5条数据验证结果
print(image_df.head())

关键注意点

load_files要求数据集必须按类别分文件夹,结构示例如下:

image_dataset/
    cat/
        cat1.jpg
        cat2.jpg
    dog/
        dog1.jpg
        dog2.jpg

如果你的数据集结构不符合此要求,load_files无法正确识别标签,建议使用下面的手动遍历方法。


方法二:手动遍历文件构造DataFrame(适用于任意结构的数据集)

若数据集未按类别分文件夹,或load_files无法正常工作,可通过os.walk手动遍历所有图像文件,同时按需提取标签:

完整代码示例

import os
import pandas as pd

dataset_path = "path/to/your/image_dataset"
file_paths = []
labels = []

# 遍历所有常见格式的图像文件
for root, _, files in os.walk(dataset_path):
    for file in files:
        if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            file_paths.append(os.path.abspath(os.path.join(root, file)))
            # 若子文件夹名为标签,提取根目录最后一级作为标签;无标签则替换为labels.append(None)
            labels.append(os.path.basename(root))

# 构造DataFrame
image_df = pd.DataFrame({
    "file_path": file_paths,
    "label": labels
})

# 查看前5条数据验证结果
print(image_df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:40:06