Як читати файл CSV в Python (Модуль, приклади Pandas)
Що таке файл CSV?
A Файл CSV це простий тип звичайного текстового файлу, який використовує певну структуру для впорядкування табличних даних. Стандартний формат файлу CSV визначається даними рядків і стовпців, де символ нового рядка завершує кожен рядок, щоб почати наступний рядок, а кожен стовпець усередині рядка відокремлюється комою.
CSV є поширеним форматом для обміну даними, оскільки він компактний, простий і загальний. Багато онлайн-сервісів дозволяють своїм користувачам експортувати табличні дані з веб-сайту у файл CSV. Файли CSV відкриваються в Excel, і майже всі бази даних мають інструмент для імпорту з файлів CSV.
Зразок файлу CSV
Дані у вигляді таблиць також називають CSV (comma sectioned values) – буквально «значення, розділені комами». Це текстовий формат, призначений для представлення табличних даних. Кожен рядок файлу є одним рядком таблиці. Значення окремих стовпців розділяються роздільником – комою (,), крапкою з комою (;) або іншим символом. CSV можна легко читати та обробляти Python.
Розгляньте наступну таблицю
Дані таблиці
Мова програмування | Designed by | З'явився | Розширення |
---|---|---|---|
Python | Гвідо ван Россум | 1991 | .py |
Java | Джеймс Гослінг | 1995 | .Java |
C++ | Бьерн Страуструп | 1983 | .cpp |
Ви можете представити цю таблицю в CSV, як показано нижче.
Дані CSV
Мова програмування, Розроблено, З'явилося, Розширення
Python, Гвідо ван Россум, 1991, .py
Java, Джеймс Гослінг, 1995, .java
C++, Б'ярн Страуструп, 1983,.cpp
Як ви бачите, кожен рядок є новим рядком, а кожен стовпець розділений комою. Це приклад того, як виглядає файл 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 в Python
Нижче наведено кроки для читання файлу CSV Python.
Крок 1) Щоб зчитувати дані з файлів CSV, необхідно використати функцію reader для створення об’єкта reader.
Функція читання розроблена для отримання кожного рядка файлу та створення списку всіх стовпців. Потім вам потрібно вибрати стовпець, для якого ви хочете отримати змінні дані.
Це звучить набагато складніше, ніж є. Давайте поглянемо на це Python код для читання файлу 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)
Крок 2) Коли ви виконаєте наведену вище програму, результатом буде:
['Programming language; Designed by; Appeared; Extension'] ['Python; Guido van Rossum; 1991; .py'] ['Java; James Gosling; 1995; .java'] ['C++; Bjarne Stroustrup;1983;.cpp']
Як прочитати файл CSV у словнику в Python
Ви також можете використовувати 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 Python
Ось як записати файл CSV Python:
Якщо у вас є набір даних, які ви хочете зберегти у файлі 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
Pandas — це бібліотека з відкритим кодом, яка дозволяє імпортувати CSV Python і виконувати маніпуляції з даними. Pandas надає простий спосіб створювати, маніпулювати та видаляти дані.
Ви повинні встановити бібліотеку pandas за допомогою команди pip install pandas . в Windows, ви виконайте цю команду в командному рядку в Linux у терміналі.
Зчитування CSV у pandas DataFrame дуже швидке та просте:
#import necessary modules import pandas result = pandas.read_csv('X:\data.csv') print(result)
Результат читати CSV Pandas приклад:
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
Дуже корисна бібліотека. Лише за три рядки коду ви отримаєте той самий результат, що й раніше. Pandas знає, що перший рядок CSV містить назви стовпців, і використовуватиме їх автоматично.
Напишіть файл CSV за допомогою Pandas
Запис у файл CSV за допомогою Pandas так само простий, як і читання. Ось ви можете в цьому переконатися. Спочатку ви повинні створити DataFrame на основі наступного Python записати в код CSV.
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 — найкращий спосіб збереження, перегляду та надсилання даних. Насправді це не так важко навчитися, як здається на початку. Але трохи потренувавшись, ви впораєтеся.
Pandas — чудова альтернатива для читання файлів CSV.
Крім того, існують інші способи аналізу текстових файлів за допомогою таких бібліотек, як ANTLR, PLY і PlyPlus. Усі вони можуть обробляти інтенсивний аналіз, і якщо проста маніпуляція String не працює, є регулярні вирази, які ви можете використовувати.