Що таке файл CSV?
Файл CSV - це тип простого текстового файлу, який використовує специфічне структурування для упорядкування табличних даних. CSV - це поширений формат обміну даними, оскільки він компактний, простий і загальний. Багато онлайнових служб дозволяють своїм користувачам експортувати табличні дані з веб-сайту у файл CSV. Файли CSV відкриються в Excel, і майже у всіх базах даних є інструмент, що дозволяє імпортувати файл CSV. Стандартний формат визначається даними рядків і стовпців. Більше того, кожен рядок закінчується новим рядком, щоб розпочати наступний рядок. Також у межах рядка кожен стовпець відокремлюється комою.
У цьому підручнику ви дізнаєтесь:
- Що таке файл CSV?
- Зразок файлу CSV.
- Модуль CSV Python
- Функції модуля CSV
- Читання файлів CSV
- Читання як словник
- Запис у файли CSV
- Читання CSV-файлів з Pandas
- Запис у файли CSV за допомогою Pandas
Зразок файлу CSV.
Дані у вигляді таблиць також називають CSV (значення, розділені комами) - буквально "значення, розділені комами". Це текстовий формат, призначений для подання табличних даних. Кожен рядок файлу - це один рядок таблиці. Значення окремих стовпців відокремлюються символом-роздільником - комою (,), крапкою з комою (;) або іншим символом. CSV може бути легко прочитаний та оброблений Python.
Розглянемо наступну таблицю
Дані таблиці
Мова програмування | Спроектований | З'явився | Розширення |
Python | Гвідо ван Россум | 1991 рік | .py |
Java | Джеймс Гослінг | 1995 рік | .java |
C ++ | Бьярн Страуструп | 1983 рік | .cpp |
Ви можете представити цю таблицю в CSV, як показано нижче.
Дані CSV
Мова програмування, Розроблено, З'явилося, Розширення
Python, Guido van Rossum, 1991, .py
Java, Джеймс Гослінг, 1995, .java
C ++, Bjarne Stroustrup, 1983, .cpp
Як бачите, кожен рядок - це новий рядок, і кожен стовпець відокремлюється комою. Це приклад того, як виглядає файл CSV.
Завантажте дані CSV
Модуль CSV Python
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 modulesimport csvwith 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 modulesimport csvreader = 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 modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.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, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp
Читання CSV-файлів з Pandas
Pandas - це бібліотека відкритого джерела, яка дозволяє виконувати маніпуляції з даними в Python. Панди надають простий спосіб створення, обробки та видалення даних.
Ви повинні встановити бібліотеку панд за допомогою команди pip install pandas
. У Windows ви виконаєте цю команду в командному рядку, а в Linux на терміналі.
Читання CSV у pandas DataFrame дуже швидко та просто:
#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)
Результат:
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Дуже корисна бібліотека. Лише за три рядки коду ви отримаєте той самий результат, що і раніше. Панди знають, що перший рядок CSV містив імена стовпців, і він використовуватиме їх автоматично.
Запис у файли CSV за допомогою Pandas
Запис у файл CSV за допомогою Pandas так само простий, як і читання. Тут ви можете в цьому переконати. Спочатку потрібно створити DataFrame на основі наступного коду.
from pandas import DataFrameC = {'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 storedprint (df)
Ось результат
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
І файл CSV створюється у вказаному місці.
Висновок
Отже, тепер ви знаєте, як використовувати метод 'csv', а також читати та записувати дані у форматі CSV. Файли CSV широко використовуються в програмних додатках, оскільки їх легко читати та керувати ними, а їх невеликий розмір робить їх відносно швидкими для обробки та передачі.
Модуль csv надає різні функції та класи, які дозволяють легко читати та писати. Ви можете подивитися офіційну документацію на Python і знайти ще кілька цікавих порад та модулів. CSV - найкращий спосіб збереження, перегляду та надсилання даних. Насправді це не так важко навчитися, як здається на початку. Але, трохи попрактикувавшись, ви це освоїте.
Pandas - чудова альтернатива для читання файлів CSV.
Крім того, існують інші способи синтаксичного аналізу текстових файлів за допомогою бібліотек, таких як ANTLR, PLY та PlyPlus. Всі вони можуть обробляти сильний розбір, і якщо просте маніпулювання рядками не працює, є регулярні вирази, якими ви можете скористатися.