Работа с данными — неизбежная часть программирования, и как человек, который часто оказывается по колено в различных форматах файлов, я всегда ценил, как Python упрощает весь процесс.
Одним из таких форматов файлов, который регулярно используется, особенно при анализе данных, является файл CSV.
CSV, или значения, разделенные запятыми, — популярный формат обмена данными благодаря своей простоте.
К счастью, в Python имеется встроенный модуль csv, который делает работу с этими файлами чрезвычайно эффективной.
В этой статье я расскажу, как работает модуль csv в Python, от базового использования до более продвинутых методов, которые могут сэкономить вам массу времени при обработке данных.
Прежде чем углубляться в модуль csv, давайте начнем с базового понимания того, что такое CSV-файл.
Файл CSV по существу представляет собой обычный текстовый файл, в котором каждая строка представляет собой строку данных, а каждое значение разделено запятой (или иногда другими разделителями, например табуляциями).
Вот краткий пример того, как это может выглядеть:
Name,Age,Occupation Alice,30,Engineer Bob,25,Data Scientist Charlie,35,Teacher
Вы можете задаться вопросом, зачем вам модуль csv, если файлы CSV — это просто текстовые файлы, которые теоретически можно прочитать с использованием стандартных методов обработки файлов Python.
Хотя это правда, файлы CSV могут иметь сложности, такие как встроенные запятые, разрывы строк внутри ячеек и различные разделители, с которыми сложно справиться вручную.
Модуль csv абстрагирует все это, позволяя вам сосредоточиться на своих данных.
Давайте перейдем к коду.
Самая распространенная операция, которую вы выполняете с CSV-файлом, — это чтение его содержимого.
Функция csv.reader() в модуле — простой в использовании инструмент для этого.
Вот пошаговое руководство, как это сделать.
Основы чтения CSV
import csv # Open a CSV file with open('example.csv', 'r') as file: reader = csv.reader(file) # Iterate over the rows for row in reader: print(row)
Это самый простой способ прочитать CSV-файл.
Csv.reader() возвращает итерацию, где каждая итерация дает вам список, представляющий строку файла.
Обработка заголовков
Большинство файлов CSV имеют заголовки в первой строке, например имена столбцов.
Если вам не нужны эти заголовки, вы можете просто пропустить первую строку при итерации:
import csv with open('example.csv', 'r') as file: reader = csv.reader(file) # Skip header next(reader) for row in reader: print(row)
Иногда я работаю с файлами, содержащими как полезные, так и ненужные данные, и обнаруживаю, что пропускаю строки не только из-за заголовка.
Вы можете легко сделать это в цикле for.
DictReader: более интуитивно понятный способ чтения файлов CSV
Если в вашем CSV-файле есть заголовки, csv.DictReader() — еще один фантастический вариант, который читает каждую строку как словарь, где ключами являются имена столбцов:
import csv with open('example.csv', 'r') as file: reader = csv.DictReader(file) for row in reader: print(row)
Такой подход может сделать ваш код более читабельным и интуитивно понятным, особенно при работе с большими наборами данных.
Например, доступ к строке['Name'] кажется гораздо более понятным, чем доступ на основе индекса, такой как строка[0].
После того как вы прочитали и обработали свои данные, скорее всего, вы захотите сохранить или экспортировать их.
Функция csv.writer() – это удобный инструмент для записи в файлы CSV.
Основы написания CSV
import csv # Data to be written data = [ ['Name', 'Age', 'Occupation'], ['Alice', 30, 'Engineer'], ['Bob', 25, 'Data Scientist'], ['Charlie', 35, 'Teacher'] ] # Open a file in write mode with open('output.csv', 'w', newline='') as file: writer = csv.writer(file) # Write data to the file writer.writerows(data)
Функция write.writerows() принимает список списков и записывает их в файл CSV, где каждый внутренний список представляет собой строку данных.
DictWriter: более чистый способ записи файлов CSV
Точно так же, как у нас есть DictReader для чтения файлов CSV в словари, у нас есть DictWriter для записи словарей в CSV.
Этот метод может быть особенно удобен, если вы хотите явно указать имена столбцов.
import csv # Data as list of dictionaries data = [ {'Name': 'Alice', 'Age': 30, 'Occupation': 'Engineer'}, {'Name': 'Bob', 'Age': 25, 'Occupation': 'Data Scientist'}, {'Name': 'Charlie', 'Age': 35, 'Occupation': 'Teacher'} ] # Open file for writing with open('output.csv', 'w', newline='') as file: fieldnames = ['Name', 'Age', 'Occupation'] writer = csv.DictWriter(file, fieldnames=fieldnames) # Write the header writer.writeheader() # Write the data writer.writerows(data)
Используя DictWriter, вы получаете красивый и понятный интерфейс для записи словарей в CSV, сохраняя при этом ваш код читабельным и кратким.
По умолчанию модуль CSV использует запятые для разделения значений, но иногда вы можете работать с файлами, в которых используются другие разделители, например табуляция или точки с запятой.
Модуль csv предоставляет простой способ справиться с такими случаями, указав аргумент-разделитель.
import csv with open('example_tab.csv', 'r') as file: reader = csv.reader(file, delimiter='\t') for row in reader: print(row)
Я встречал файлы CSV, в которых вместо запятых используются точки с запятой — обычно из европейских источников — и приятно осознавать, что модуль CSV Python легко справляется с этим.
Будь то запятые, табуляции или любой другой разделитель, модуль csv поможет вам.
Что делать, если ваши данные содержат запятые внутри полей, кавычки или даже разрывы строк?
Модуль CSV автоматически обрабатывает такие случаи, используя механизмы цитирования.
Вы также можете контролировать работу цитирования с помощью параметра quoting.
import csv data = [ ['Name', 'Occupation', 'Description'], ['Alice', 'Engineer', 'Works on, "cutting-edge" technology'], ['Bob', 'Data Scientist', 'Loves analyzing data.'] ] with open('complex.csv', 'w', newline='') as file: writer = csv.writer(file, quoting=csv.QUOTE_ALL) writer.writerows(data)
В этом примере QUOTE_ALL гарантирует, что каждое поле заключено в кавычки.
Другие параметры кавычек включают csv.QUOTE_MINIMAL, csv.QUOTE_NONNUMERIC и csv.QUOTE_NONE, что дает вам полный контроль над форматированием ваших данных CSV.
За прошедшие годы я стал полагаться на формат CSV как на легкий и эффективный способ перемещения данных, и модуль CSV Python стал надежным спутником в этом путешествии.
Имеете ли вы дело с простыми электронными таблицами или сложными многострочными полями данных, этот модуль делает процесс интуитивно понятным и легким.
Хотя работа с CSV-файлами на первый взгляд может показаться обыденной задачей, это путь к мастерству манипулирования данными.
По моему опыту, освоив CSV, вы сможете уверенно работать с более крупными и сложными форматами, такими как базы данных JSON или SQL. В конце концов, все начинается с азов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3