Учебники

53) Python CSV

Что такое файл CSV?

CSV-файл — это тип обычного текстового файла, в котором для упорядочения табличных данных используется определенная структура. CSV — это распространенный формат обмена данными, поскольку он компактен, прост и универсален. Многие онлайн-сервисы позволяют пользователям экспортировать табличные данные с веб-сайта в файл CSV. Файлы CSV откроются в Excel, и почти во всех базах данных есть инструмент, позволяющий импортировать из файла CSV. Стандартный формат определяется данными строк и столбцов. Кроме того, каждая строка заканчивается новой строкой, чтобы начать следующую строку. Также внутри строки каждый столбец отделяется запятой.

В этом уроке вы узнаете:

Пример файла CSV.

Данные в форме таблиц также называются CSV (значения, разделенные запятыми) — буквально «значения, разделенные запятыми». Это текстовый формат, предназначенный для представления табличных данных. Каждая строка файла — это одна строка таблицы. Значения отдельных столбцов разделяются символом-разделителем — запятой (,), точкой с запятой (;) или другим символом. CSV легко читается и обрабатывается Python.

Рассмотрим следующую Табе

Данные таблицы

Язык программирования Разработано Появился расширение
питон Гидо ван Россум 1991 .py
Ява Джеймс Гослинг 1995 .Ява
C ++ Бьярне Страуструп 1983 .cpp

Вы можете представить эту таблицу в CSV, как показано ниже.

Данные CSV

Язык программирования, разработан, появился, расширение

Питон, Гвидо ван Россум, 1991, .py

Ява, Джеймс Гослинг, 1995, .java

C ++, Бьярн Страуструп, 1983, .cpp

Как видите, каждая строка — это новая строка, а каждый столбец разделен запятой. Это пример того, как выглядит файл CSV.

Скачать данные CSV

Модуль Python CSV

Python предоставляет модуль CSV для обработки файлов CSV. Для чтения / записи данных вам нужно пройтись по строкам CSV. Вам нужно использовать метод split для получения данных из указанных столбцов.

Функции модуля CSV

В документации модуля CSV вы можете найти следующие функции:

  • csv.field_size_limit — возвращает максимальный размер поля
  • csv.get_dialect — получить диалект, связанный с именем
  • csv.list_dialects — показать все зарегистрированные диалекты
  • csv.reader — читать данные из файла csv
  • csv.register_dialect — ассоциирует диалект с именем
  • csv.writer — записывает данные в файл csv
  • csv.unregister_dialect — удалить диалект, связанный с именем реестра диалекта
  • csv.QUOTE_ALL — Цитировать все, независимо от типа.
  • csv.QUOTE_MINIMALзаключить в кавычки поля со специальными символами
  • csv.QUOTE_NONNUMERICзаключить в кавычки все поля, которые не являются числовыми значениями
  • csv.QUOTE_NONE — ничего не заключать в кавычки

В этом руководстве мы сосредоточимся только на функциях чтения и записи, которые позволяют редактировать, изменять и манипулировать данными в файле CSV.

Как читать файл CSV

Для чтения данных из CSV-файлов необходимо использовать функцию чтения для создания объекта чтения.

Функция чтения разработана, чтобы взять каждую строку файла и составить список всех столбцов. Затем вы должны выбрать столбец, для которого вы хотите переменные данные.

Это звучит намного сложнее, чем есть. Давайте посмотрим на этот пример, и мы обнаружим, что работать с CSV-файлом не так сложно.

#import necessary modules
import csv
with open('X:\data.csv','rt')as f:
  data = csv.reader(f)
  for row in data:
        print(row)

Когда вы запустите программу выше, результат будет:

['Programming language; Designed by; Appeared; Extension']
['Python; Guido van Rossum; 1991; .py']
['Java; James Gosling; 1995; .java']
['C++; Bjarne Stroustrup;1983;.cpp']

Как читать CSV как словарь

Вы также можете использовать DictReader для чтения файлов CSV. Результаты интерпретируются как словарь, в котором строка заголовка является ключом, а остальные строки являются значениями.

Рассмотрим следующий код

#import necessary modules
import csv

reader = csv.DictReader(open("file2.csv"))
for raw in reader:
    print(raw)

Результат этого кода:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])
OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])
OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

И этот способ чтения данных из файла CSV намного проще, чем предыдущий метод. Однако это не самый лучший способ чтения данных.

Как написать файл CSV

Если у вас есть набор данных, которые вы хотели бы сохранить в CSV-файле, вы должны использовать функцию writer (). Чтобы перебрать данные по строкам (строкам), вы должны использовать функцию writerow ().

Рассмотрим следующий пример. Мы записываем данные в файл «writeData.csv», где разделитель является апострофом.

#import necessary modules
import csv

with open('X:\writeData.csv', mode='w') as file:
    writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    #way to write to csv file
    writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])
    writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])
    writer.writerow(['Java', 'James Gosling', '1995', '.java'])
    writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

Результат в CSV-файле:

Programming language, Designed by, Appeared, Extension 
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp

Чтение CSV-файлов с помощью панд

Pandas — это библиотека с открытым исходным кодом, позволяющая вам манипулировать данными в Python. Панды предоставляют простой способ создавать, манипулировать и удалять данные.

Вы должны установить библиотеку pandas с помощью команды <code> pip install pandas </ code>. В Windows вы будете выполнять эту команду в командной строке, а в Linux — в терминале.

Чтение CSV в pandas DataFrame очень быстро и просто:

#import necessary modules
import pandas
result = pandas.read_csv('X:\data.csv')
print(result)

Результат:

Programming language, Designed by, Appeared, Extension 
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp	

Очень полезная библиотека. Всего в трех строках кода вы получите тот же результат, что и ранее. Панды знают, что первая строка CSV содержала имена столбцов, и она будет использовать их автоматически.

Запись в файлы CSV с помощью Pandas

Запись в CSV-файл с помощью Pandas так же проста, как и чтение. Здесь вы можете убедить в этом. Сначала вы должны создать DataFrame на основе следующего кода.

from pandas import DataFrame
C = {'Programming language': ['Python','Java', 'C++'],
        'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
        'Appeared': ['1991', '1995', '1985'],
        'Extension': ['.py', '.java', '.cpp'],
    }
df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])
export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored
print (df)

Вот вывод

Programming language, Designed by, Appeared, Extension
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

И файл CSV создается в указанном месте.

Вывод

Итак, теперь вы знаете, как использовать метод «csv», а также читать и записывать данные в формате CSV. Файлы CSV широко используются в программных приложениях, потому что их легко читать и управлять ими, а их небольшой размер делает их относительно быстрыми для обработки и передачи.

Модуль CSV предоставляет различные функции и классы, которые позволяют легко читать и писать. Вы можете посмотреть официальную документацию по Python и найти еще несколько интересных советов и модулей. CSV — лучший способ сохранения, просмотра и отправки данных. На самом деле, это не так сложно учиться, как кажется в начале. Но с небольшой практикой вы справитесь с этим.

Панды — отличная альтернатива чтению файлов CSV.

Также есть другие способы анализа текстовых файлов с библиотеками, такими как ANTLR, PLY и PlyPlus. Все они могут обрабатывать тяжелые операции синтаксического анализа, и если простое манипулирование строками не работает, есть регулярные выражения, которые вы можете использовать.