CSV là một chuẩn định dạng dữ liệu cưc kì đơn giản, trong đó các giá trị được ngăn cách nhau bởi một kí tự đặc biệt. Trong bài viết này SmartData sẽ hướng dẫn các bạn cách để đọc ghi file csv trong python
Cấu tạo của file CSV
Dưới đây là một ví dụ về file CSV, trong đó:
- Dữ liệu được chia thành nhiều dòng
- Dữ liêu trong cùng 1 dòng ngăn cách nhau bởi dấu “;”
Bạn có thể download file mẫu tại đây
Đọc file CSV với Python – Sử dụng thư viện CSV
Bạn có thể sử dụng thư viên csv để đọc file định dạng CSV trong Python.
import csv with open('./email.csv') as f: reader = csv.reader(f)
csv.reader sẽ trả về dữ liệu một đối tượng dạng reader. Ta có thể sử dụng vòng for loop để truy vấn dữ liệu trong đối tượng đó.
with open('./email.csv') as f: reader = csv.reader(f) for eachRow in reader: print(eachRow) # Dữ liêu trả về như sau: #['Login email;Identifier;First name;Last name'] #['laura@example.com;2070;Laura;Grey'] #['craig@example.com;4081;Craig;Johnson'] #['mary@example.com;9346;Mary;Jenkins'] #['jamie@example.com;5079;Jamie;Smith']
Truy vấn từng dòng dữ liệu
Để truy vấn từng dòng dữ liêu ta có thể làm như sau:
with open('./email.csv') as f: reader = csv.reader(f) data = [row for row in reader] # in ra giá trị từng dòng print(data[1]); # ['Login email;Identifier;First name;Last name']
Phân tích từng dòng dữ liêu thành dạng mảng
Python mặc định parse các dòng dữ liêu theo dấu phân cách là dấu phẩy. Bạn có thể chuyển đổi dấu phân cách(delimiter) mặc định thành dấu khác bằng cách thêm tham số delimiter vào đầu vào của hàm reader. Khi đó dữ liệu sẽ được trả ra theo dạng mảng ở từng dòng.
with open('./email.csv') as f: reader = csv.reader(f,delimiter=';') data = [row for row in reader] # in ra giá trị từng dòng theo dạng mảng print(data[1]); # ['laura@example.com', '2070', 'Laura', 'Grey']
Đọc file CSV với Python – Sử dụng DictReader
with open('./email.csv') as f: reader = csv.DictReader(f, delimiter=";") for row in reader: print(row) #{'Login email': 'laura@example.com', 'Identifier': '2070', 'First name': 'Laura', 'Last name': 'Grey'} #{'Login email': 'craig@example.com', 'Identifier': '4081', 'First name': 'Craig', 'Last name': 'Johnson'} #{'Login email': 'mary@example.com', 'Identifier': '9346', 'First name': 'Mary', 'Last name': 'Jenkins'} #{'Login email': 'jamie@example.com', 'Identifier': '5079', 'First name': 'Jamie', 'Last name': 'Smith'}
Ghi file CSV trong Python với DictWriter
Bạn có thể ghi file trong csv với DictWriter như sau:
import csv with open("test.csv", 'w', encoding='utf-8') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=["email", "name"]) writer.writeheader() writer.writerow({'email': 'magnus@gmail.com', 'name': 'Magnus'}) writer.writerow({'email': 'Caruana@hotmail.com', 'name': 'Carra'}) writer.writerow({'email': 'Ding@vn.mail', 'name': 'Dong'}) #fieldName là tên các cột # File đầu ra sẽ có dữ liêu như sau: #email,name #magnus@gmail.com,Magnus #Caruana@hotmail.com,Carra #Ding@vn.mail,Dong
Tổng kết
Trong bài viết trên SmartData đã hướng dẫn các bạn cách đọc ghi file csv trong Python sử dụng một số thư viện của Python. Các bạn có thể tham khảo thêm link sau để xem thêm các bài viết khác về Python của SmartData
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 6 tháng của SmartData