从.csv -file

时间:2019-12-02 08:26:01

标签: python csv jupyter-notebook pytorch

我正在尝试使用jupyter Notebook建立人脸检测模型,并在尝试使用文件名和标签编写.csv文件时遇到一些困难。

这是我使用的功能:

##Attaching label to correct file names

item_list = glob.glob('data/dest/celeba/faces/*/*.jpg'.  )

item_df = pd.DataFrame({'image_name':pd.Series(item_list).apply(lambda x: '/'.join(x.split('/')[-2]))})

istem_df['image_id'] = item_df.image_name.apply(lambda x: x.split('/')[1])


## Creating final label set


label_df = pd.read_csv('data/dest/celeba/labels.csv')

label_df = label_df.merge(item_df, on='image_id', how='inner')

label_df.rename(columns={'label':'tags'}, inplace=True)

label_df.loc[:,['image_name','tags']].to_csv('data/dest/celeba/labels1.csv', index=False)

我认为,“ labels.csv”应该是应该的。这是文件开头的几行:

,image_id,label
0,000001.jpg,Arched_Eyebrows Attractive Brown_Hair Heavy_Makeup High_Cheekbones Mouth_Slightly_Open No_Beard Pointy_Nose Smiling Straight_Hair Wearing_Earrings Wearing_Lipstick Young
1,000002.jpg,Bags_Under_Eyes Big_Nose Brown_Hair High_Cheekbones Mouth_Slightly_Open No_Beard Smiling Young

应再次用“标签”书写。但是labels1.csv看起来像这样:

image_name,tags

否则为空。当我打电话给print(data.c,'\n',data.classes)时,它会打印0 []

有人可以帮我解释我在做什么错吗?

编辑。我将其编辑到此处以避免聊天。因此,我已经根据收到的帮助编辑了代码,这就是现在的样子:

## Attachhing label to correct file names
item_list = glob.glob('data/dest/celeba/faces/*/*.jpg')
item_df = pd.DataFrame({'image_name':pd.Series(item_list).apply(lambda x: '/'.join(x.split('/')[-2]))})
item_df['image_id'] = item_df.image_name.apply(lambda x: x.split('/')[1])

## Creating final label set
label_df = pd.read_csv('data/dest/celeba/labels.csv')
label_df = label_df.merge(item_df, left_on='image_id', right_on='image_id')
label_df.rename(columns={'label':'tags'}, inplace=True)
label_df.loc[:,['image_name','tags']].to_csv('data/dest/celeba/faces/labels.csv', index=False)

这仍然给我一个空的“ labels1.csv”文件,仅包含标题:image_name,tags

2 个答案:

答案 0 :(得分:0)

您正在使用.loc方法从行ID中仅获取['image_name','tags']。 更改此部分:

label_df.loc[:,['image_name','tags']].to_csv('data/dest/celeba/labels1.csv', index=False)

与此:

header = ["image_id", "tags"]
label_df.to_csv('data/dest/celeba/labels1.csv', columns = header, index=False)

答案 1 :(得分:0)

我认为首先您必须在“ data / celeba / faces /”中创建两个名为“ training”和“ validation”的文件夹。

代码中的某些更改:

new String(targetString.getBytes(), "UTF-8")

这将通过合并数据框来帮助您创建“ label.csv”,并将数据集分为训练和验证。