如何将纯图像数据集转换为包含文件路径和标签的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
相关产品推荐
相关产品推荐

