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
emailDownload
Đọ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
CSV [Comma Separated Values] hay giá trị được phân tách bằng dấu phẩy] là một định dạng tệp đơn giản được sử dụng để lưu trữ dữ liệu dạng bảng, chẳng hạn như bảng tính hoặc cơ sở dữ liệu. Tệp CSV lưu trữ dữ liệu dạng bảng [số và văn bản] ở dạng văn bản thuần túy. Mỗi dòng của tệp là một bản ghi dữ liệu. Mỗi bản ghi bao gồm một hoặc nhiều trường, được phân tách bằng dấu phẩy. Việc sử dụng dấu phẩy làm dấu phân tách trường là nguồn gốc của tên cho định dạng tệp này. [Comma Separated Values] hay giá trị được phân tách bằng dấu phẩy] là một định dạng tệp đơn giản được sử dụng để lưu trữ dữ liệu dạng bảng, chẳng hạn như bảng tính hoặc cơ sở dữ liệu. Tệp CSV lưu trữ dữ liệu dạng bảng [số và văn bản] ở dạng văn bản thuần túy. Mỗi dòng của tệp là một bản ghi dữ liệu. Mỗi bản ghi bao gồm một hoặc nhiều trường, được phân tách bằng dấu phẩy. Việc sử dụng dấu phẩy làm dấu phân tách trường là nguồn gốc của tên cho định dạng tệp này.
Nội dung chính Show
- Cách đọc tệp CSV trong Python
- Cấu tạo một file CSV trong Python
- Cách đọc file CSV trong Python:
- Sử dụng csv.reader []
- Sử dụng lớp csv.DictReader []
Đối với các tệp CSV hoạt động trong python, có một mô-đun có sẵn gọi là csv .csv .
Cách đọc tệp CSV trong Python
# importing csv module
import csv
# csv file name
filename = "aapl.csv"
# initializing the titles and rows list
fields = []
rows = []
# reading csv file
with open[filename, 'r'] as csvfile:
# creating a csv reader object
csvreader = csv.reader[csvfile]
# extracting field names through first row
fields = next[csvreader]
# extracting each data row one by one
for row in csvreader:
rows.append[row]
# get total number of rows
print["Total no. of rows: %d"%[csvreader.line_num]]
# printing the field names
print['Field names are:' + ', '.join[field for field in fields]]
# printing first 5 rows
print['\nFirst 5 rows are:\n']
for row in rows[:5]:
# parsing each column of a row
for col in row:
print["%10s"%col],
print['\n']
Output
Ví dụ về File CSV trong Python
>>> Xem thêm: Câu lệnh if else trong Python - Tất tần tật về câu lệnh if else trong Python
Cấu tạo một file CSV trong Python
Một file CSV gồm 3 phần:
- Phần đầu tiên: tương ứng với cột đầu tiên trong bảng tính, biểu thị tên của các cột, mỗi cột được ngăn cách với nhau bởi dấu phẩy.
- Phần thứ 2: tương ứng với cột cuối cùng trong bảng tính
- Phần thứ 3: bao gồm các dòng có cấu trúc tương đương nhau, tương ứng với nội dung của các cột giá trị trong bảng tính. Lưu ý, mỗi dòng của văn bản là một dòng giá trị khác nhau trên bảng tính.
Cách đọc file CSV trong Python:
Có nhiều cách khác nhau để đọc tệp CSV sử dụng mô-đun csv hoặc thư viện pandas trong Python.
- Mô-đun csv: Mô-đun CSV là một trong những mô-đun bằng Python cung cấp các lớp để đọc và ghi thông tin dạng bảng ở định dạng tệp CSV. CSV là một trong những mô-đun bằng Python cung cấp các lớp để đọc và ghi thông tin dạng bảng ở định dạng tệp CSV.
- Thư viện pandas: Thư viện pandas là một trong những thư viện Python mã nguồn mở cung cấp các cấu trúc dữ liệu thuận tiện, hiệu suất cao và các công cụ và kỹ thuật phân tích dữ liệu cho lập trình Python. pandas là một trong những thư viện Python mã nguồn mở cung cấp các cấu trúc dữ liệu thuận tiện, hiệu suất cao và các công cụ và kỹ thuật phân tích dữ liệu cho lập trình Python.
Tệp CSV dưới đây có tên 'Giants.CSV':
Ví dụ về đọc file CSV trong Python
>>> Tham khảo: Khóa học lập trình Python
Sử dụng csv.reader []
Lúc đầu, tệp CSV được mở bằng phương thức open[]ở chế độ 'r' [chỉ định chế độ đọc trong khi mở tệp] trả về đối tượng tệp sau đó nó được đọc bằng cách sử dụng phương thức reader[] của mô-đun CSV trả về đối tượng trình đọc lặp lại trong suốt các dòng trong tài liệu CSV được chỉ định.Lưu ý: Các từ khóa ' with' được sử dụng cùng với các phương pháp open [] vì nó đơn giản hoá việc xử lý ngoại lệ và tự động đóng các tập tin CSV.
Lưu ý: Các từ khóa ' with' được sử dụng cùng với các phương pháp open [] vì nó đơn giản hoá việc xử lý ngoại lệ và tự động đóng các tập tin CSV.
import csv
# opening the CSV file
with open['Giants.csv', mode ='r']as file:
# reading the CSV file
csvFile = csv.reader[file]
# displaying the contents of the CSV file
for lines in csvFile:
print[lines]
Output nhận được:
['Organiztion', 'CEO', 'Established']
['Alphabet', 'Sundar Pichai', '02-Oct-15']
['Microsoft', 'Satya Nadella', '04-Apr-75']
['Aamzon', 'Jeff Bezos', '05-Jul-94']
Trong chương trình trên, phương thức reader [] được sử dụng để đọc tệp Giants.csv ánh xạ dữ liệu thành danh sách.
Sử dụng lớp csv.DictReader []
Tương tự như phương pháp trước, tệp CSV lần đầu tiên được mở bằng phương thức open[] này sau đó được đọc bằng cách sử dụng DictReader, lớp mô-đun csv hoạt động giống như một trình đọc thông thường nhưng ánh xạ thông tin trong tệp CSV vào từ điển. Dòng đầu tiên của tệp bao gồm các khóa từ điển.
import csv
# opening the CSV file
with open['Giants.csv', mode ='r'] as file:
# reading the CSV file
csvFile = csv.DictReader[file]
# displaying the contents of the CSV file
for lines in csvFile:
print[lines]
Output
OrderedDict[[[‘Organiztion’, ‘Alphabet’], [‘CEO’, ‘Sundar Pichai’], [‘Established’, ’02-Oct-15′]]]
OrderedDict[[[‘Organiztion’, ‘Microsoft’], [‘CEO’, ‘Satya Nadella’], [‘Established’, ’04-Apr-75′]]]
OrderedDict[[[‘Organiztion’, ‘Aamzon’], [‘CEO’, ‘Jeff Bezos’], [‘Established’, ’05-Jul-94′]]]
Sử dụng phương thức pandas.read_csv []: Rất dễ dàng và đơn giản để đọc tệp CSV bằng các hàm thư viện pandas. Ở đây, phương thức read_csv[] trong thư viện Pandas được sử dụng để đọc dữ liệu từ tệp CSV. Rất dễ dàng và đơn giản để đọc tệp CSV bằng các hàm thư viện pandas. Ở đây, phương thức read_csv[] trong thư viện Pandas được sử dụng để đọc dữ liệu từ tệp CSV.
import pandas
# reading the CSV file
csvFile = pandas.read_csv['Giants.csv']
# displaying the contents of the CSV file
print[csvFile]
Output
Organiztion CEO Established
0 Alphabet Sundar Pichai 02-Oct-15
1 Microsoft Satya Nadella 04-Apr-75
2 Aamzon Jeff Bezos 05-Jul-94
Kết luận: Bài viết trên đã giúp bạn tìm hiểu về tệp CSV trong Python. Có rất nhiều trang web đưa ra dữ liệu của họ ở định dạng này và tệp CSV cũng được sử dụng rất nhiều trong thế giới kinh doanh. Hy vọng các kiến thức về CSV sẽ hữu ích với bạn trong quá trình học lập trình. Tìm hiểu thêm về các ngôn ngữ lập trình qua các khóa học lập trình bổ ích tại T3H bạn nhé! Bài viết trên đã giúp bạn tìm hiểu về tệp CSV trong Python. Có rất nhiều trang web đưa ra dữ liệu của họ ở định dạng này và tệp CSV cũng được sử dụng rất nhiều trong thế giới kinh doanh. Hy vọng các kiến thức về CSV sẽ hữu ích với bạn trong quá trình học lập trình. Tìm hiểu thêm về các ngôn ngữ lập trình qua các khóa học lập trình bổ ích tại T3H bạn nhé!