Какво е CSV файл?
CSV файлът е тип обикновен текстов файл, който използва специфично структуриране за подреждане на таблични данни. CSV е често срещан формат за обмен на данни, тъй като е компактен, опростен и общ. Много онлайн услуги позволяват на потребителите да експортират таблични данни от уебсайта в CSV файл. Файловете на CSV ще се отворят в Excel и почти всички бази данни имат инструмент, който позволява импортиране от CSV файл. Стандартният формат се дефинира от данните за редове и колони. Освен това всеки ред се прекратява с нов ред, за да започне следващия ред. Също така в рамките на реда, всяка колона е разделена със запетая.
В този урок ще научите:
- Какво е CSV файл?
- CSV примерен файл.
- Python CSV модул
- Функции на CSV модула
- Четене на CSV файлове
- Четенето като речник
- Записване в CSV файлове
- Четене на CSV файлове с Pandas
- Писане в CSV файлове с Pandas
CSV примерен файл.
Данните под формата на таблици се наричат още CSV (стойности, разделени със запетая) - буквално „стойности, разделени със запетая“. Това е текстов формат, предназначен за представяне на таблични данни. Всеки ред от файла е един ред от таблицата. Стойностите на отделните колони са разделени със символ на разделител - запетая (,), точка и запетая (;) или друг символ. CSV може лесно да се чете и обработва от Python.
Обмислете следната таблица
Данни от таблицата
Програмен език | Проектирана от | Появи се | Удължаване |
Python | Гуидо ван Росум | 1991 г. | .py |
Java | Джеймс Гослинг | 1995 г. | .java |
C ++ | Bjarne Stroustrup | 1983 г. | .cpp |
Можете да представите тази таблица в CSV както по-долу.
CSV данни
Език за програмиране, Проектиран от, Появен, Разширение
Python, Guido van Rossum, 1991, .py
Java, Джеймс Гослинг, 1995, .java
C ++, Bjarne Stroustrup, 1983, .cpp
Както можете да видите, всеки ред е нов ред и всяка колона е отделена със запетая. Това е пример за това как изглежда CSV файл.
Изтеглете CSV данни
Python CSV модул
Python предоставя CSV модул за обработка на CSV файлове. За да четете / пишете данни, трябва да преминете през редове на CSV. Трябва да използвате метода на разделяне, за да получите данни от определени колони.
Функции на 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 файл, трябва да използвате функцията писател (). За да повторите данните по редовете (редовете), трябва да използвате функцията 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. Pandas предоставят лесен начин за създаване, манипулиране и изтриване на данните.
Трябва да инсталирате библиотека за панди с команда 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. Всички те могат да се справят с силен синтактичен анализ и ако простата манипулация на String не работи, има регулярни изрази, които можете да използвате.