Challenge # 100daysofcode – это инициатива Александра Кэллаэуэааэуэй, предназначена для того, чтобы помочь людям учиться, как кодировать быть более последовательным. Целью этой задачи было кодировать не менее часа каждый день в течение 100 дней.
Удаление этой предпосылки, я решил работать как минимум час каждый день на просто исследование и кодирование для классификации изображений. Сегодня отмечает конец первой недели, в котором я исследовал и работал над проектом Анализируя обезлесение и урбанизацию с использованием Intel AI Technologies Отказ Во время этого проекта я работал с оптимизированным Tensorflow Intel для классификации спутниковых изображений. В этой первой неделе я узнал много интересных вещей о классификации и маркировке изображений. Тот, который я нашел наиболее интересно, чтобы поделиться, будет как разбираться на этикетки из файла CSV и преобразовывать метки в формат, который я хотел.
Для этой проблемы я столкнулся, давайте посмотрим на следующий пример файла CSV. Эта таблица имеет два столбца, первый столбец, являющийся именем изображения, а второй столбец, состоящий из массива меток. Это был дизайн оригинального файла CSV, с которым я работал.
Хейзуе городская ферма | Image_001. |
город | Image_002. |
водяная ферма | Image_003. |
Желаемый формат, который мне нужен для этикеток, заключался в том, чтобы сделать имя изображения и создать текстовый файл на основе этого имени. Для первого ряда файл будет называться Image_001.jpg.txt
И содержат все этикетки для этого изображения с каждой этикеткой на отдельной строке. Кодирование в Python 3, я работал над созданием функции, которая преобразует исходные CSV в нужные текстовые файлы. Как можно увидеть ниже, файл Image_001.jpg.txt
будет заполнен данными, как так:
haze city farm
Эта функция создана для того, чтобы сделать это преобразование первым читает в пути данных и имени файла. Путь данных относится к пути, в котором сохраняется исходное CSV, и имя файла относится к имени файла CSV. Эти данные хранятся в DataFrame, которое может затем пересекать для сбора данных. Каждая строка в CSV читается как вариабельная строка. Однажды подряд, первый столбец ряд [0]
используется для создания имени нового текстового файла. Затем вторая колонна ряд [1]
расщеплен на основе пробелов. Этот список этикеток, называемый SPLITROW, затем переведен, чтобы добавить каждую метку на новую строку текстового файла. После завершения файл закрыт, а новый файл может быть создан для следующего изображения. Это создаст один текстовый файл метки для каждого изображения.
def _parse_labels(self): df_train_tags = pd.read_csv(self.data_path + self.filename) i = 0 for index, row in df_train_tags.iterrows(): if i > len(df_train_tags): print("Error: Cannot read images, file length too short...") break else: print("Processing: Reading image " + str(row[0]) + "...") f = open(self.labels_path + str(row[0])+'.jpg.txt', 'w') splitrow = row[1].split(" ") for item in splitrow: f.write(item + "\n") f.close() i+=1 print("Completed: Finished reading labels dataset...")
Интересная записка, чтобы сделать здесь, что я сначала не осознавал, почему индекс был необходим в цикле для цикла. Придумываясь о цикле для петли, я ссылаюсь на Для каждого элемента в наборе данных затем петли
где каждый элемент – ряд данных dataframe. Эта логика имеет смысл, но происходит здесь, ITEERS дает кортежную ценность, а не просто строки. Это означает, что мы должны позвонить (индекс, строку) для кортежа для доступа к столбцам.
После работы в прошлом неделе по исследованиям и кодированию это была одна из самых интересных проблем, с которыми я столкнулся, так как он занимался расщеплением и преобразованием одного единственного столбца в текстовый файл многих строк. Эта функция также помогла дать хороший обзор базовых десен и манипуляций массива в Python.
Какие интересные проблемы вы столкнулись на этой неделе?
Использованная литература:
Обложка изображения, полученное из Альфа-кодеры Intel Оптимизирован Tensorflow Tensorboard Tensorflow Guide Intel devmesh Академия Intel Ai pandas.dataframe.iterrows.
Оригинал: “https://dev.to/rosejcday/parsing-csv-rows-into-separate-text-files–29lk”