Cách đọc tệp CSV trong Python (Mô-đun, Ví dụ về Pandas)

Tệp CSV là gì?

A Tệp CSV là một loại tệp văn bản đơn giản sử dụng cấu trúc cụ thể để sắp xếp dữ liệu dạng bảng. Định dạng chuẩn của tệp CSV được xác định bởi dữ liệu hàng và cột trong đó dòng mới kết thúc mỗi hàng để bắt đầu hàng tiếp theo và mỗi cột được phân tách bằng dấu phẩy trong hàng.

CSV là định dạng phổ biến để trao đổi dữ liệu vì nó nhỏ gọn, đơn giản và chung chung. Nhiều dịch vụ trực tuyến cho phép người dùng xuất dữ liệu dạng bảng từ trang web sang tệp CSV. Các tệp CSV sẽ mở ra Excel và gần như tất cả các cơ sở dữ liệu đều có công cụ cho phép nhập từ tệp CSV.

Tệp mẫu CSV

Dữ liệu ở dạng bảng còn được gọi là CSV (giá trị được phân tách bằng dấu phẩy) - nghĩa đen là “giá trị được phân tách bằng dấu phẩy”. Đây là định dạng văn bản dành cho việc trình bày dữ liệu dạng bảng. Mỗi dòng của tập tin là một dòng của bảng. Các giá trị của các cột riêng lẻ được phân tách bằng ký hiệu phân cách – dấu phẩy (,), dấu chấm phẩy (;) hoặc ký hiệu khác. CSV có thể được đọc và xử lý dễ dàng bằng Python.

Hãy xem xét Bảng sau

Bảng dữ liệu

Ngôn ngữ lập trình Thiết kế bởi Xuất hiện Extension
Python Guido van Rossum 1991 .py
Java yêu tinh james 1995 .Java
C++ Bjarne Stroustrup 1983 .cpp

Bạn có thể biểu diễn bảng này trong csv như dưới đây.

Dữ liệu CSV

Ngôn ngữ lập trình, Thiết kế bởi, Xuất hiện, Mở rộng

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C++, Bjarne Stroustrup,1983,.cpp

Như bạn có thể thấy mỗi hàng là một dòng mới và mỗi cột được phân tách bằng dấu phẩy. Đây là ví dụ về hình thức của tệp CSV.

Tải xuống dữ liệu CSV

Python Mô-đun CSV

Python cung cấp mô-đun CSV để xử lý các tệp CSV. Để đọc/ghi dữ liệu, bạn cần lặp qua các hàng của CSV. Bạn cần sử dụng phương pháp phân tách để lấy dữ liệu từ các cột được chỉ định.

Chức năng mô-đun CSV

Trong tài liệu mô-đun CSV, bạn có thể tìm thấy các chức năng sau:

  • csv.field_size_limit – trả về kích thước trường tối đa
  • csv.get_dialect – lấy phương ngữ được liên kết với tên
  • csv.list_dialects – hiển thị tất cả các phương ngữ đã đăng ký
  • csv.reader – đọc dữ liệu từ tệp csv
  • csv.register_dialect – liên kết phương ngữ với tên
  • csv.writer – ghi dữ liệu vào tệp csv
  • csv.unregister_dialect – xóa phương ngữ được liên kết với tên sổ đăng ký phương ngữ
  • csv.QUOTE_ALL – Trích dẫn mọi thứ, không phân biệt loại.
  • csv.QUOTE_MINIMAL – Trường trích dẫn có ký tự đặc biệt
  • csv.QUOTE_NONNUMERIC – Trích dẫn tất cả các trường không phải là giá trị số
  • csv.QUOTE_NONE – Không trích dẫn bất cứ điều gì ở đầu ra

Trong hướng dẫn này, chúng tôi sẽ chỉ tập trung vào các chức năng đọc và ghi cho phép bạn chỉnh sửa, sửa đổi và thao tác dữ liệu trong tệp CSV.

Cách đọc tệp CSV trong Python

Dưới đây là các bước để đọc tệp CSV trong Python.

Bước 1) Để đọc dữ liệu từ tệp CSV, bạn phải sử dụng chức năng reader để tạo đối tượng reader.

Chức năng đọc được phát triển để lấy từng hàng của tệp và tạo danh sách tất cả các cột. Sau đó, bạn phải chọn cột mà bạn muốn chứa dữ liệu biến.

Nghe có vẻ phức tạp hơn nhiều. Chúng ta hãy nhìn vào cái này Python mã để đọc tệp CSV và chúng tôi sẽ thấy rằng làm việc với tệp csv không quá khó.

#import necessary modules
import csv
with open('X:\data.csv','rt')as f:
  data = csv.reader(f)
  for row in data:
        print(row)

Bước 2) Khi bạn thực hiện chương trình trên, kết quả sẽ là:

['Programming language; Designed by; Appeared; Extension']
['Python; Guido van Rossum; 1991; .py']
['Java; James Gosling; 1995; .java']
['C++; Bjarne Stroustrup;1983;.cpp']

Cách đọc tệp CSV vào Từ điển trong Python

Bạn cũng có thể sử dụng DictReader để đọc tệp CSV. Các kết quả được hiểu như một từ điển trong đó hàng tiêu đề là khóa và các hàng khác là giá trị.

Hãy xem xét đoạn mã sau

#import necessary modules
import csv

reader = csv.DictReader(open("file2.csv"))
for raw in reader:
    print(raw)

Kết quả của mã này là:

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')])

Đọc tệp CSV vào Từ điển

Và cách đọc dữ liệu từ tệp CSV này dễ dàng hơn nhiều so với phương pháp trước đó. Tuy nhiên, đây không phải là cách tốt nhất để đọc dữ liệu.

Cách ghi tệp CSV vào Python

Đây là cách ghi tệp CSV vào Python:

Khi bạn có một tập hợp dữ liệu muốn lưu trữ trong tệp CSV, bạn phải sử dụng hàm writer(). Để lặp lại dữ liệu qua các hàng (dòng), bạn phải sử dụng hàm writerow().

Hãy xem xét ví dụ sau. Chúng ta ghi dữ liệu vào tệp “writeData.csv” trong đó dấu phân cách là dấu nháy đơn.

#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'])

Kết quả trong tệp csv là:

Programming language, Designed by, Appeared, Extension 
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp

ghi tệp CSV vào Python

Đọc tệp CSV bằng Pandas

Pandas là một thư viện mã nguồn mở cho phép bạn nhập CSV vào Python và thực hiện thao tác dữ liệu. Pandas cung cấp một cách dễ dàng để tạo, thao tác và xóa dữ liệu.

Bạn phải cài đặt thư viện pandas bằng lệnh pip install pandas . TRONG Windows, bạn sẽ thực thi lệnh này trong Dấu nhắc Lệnh khi sử dụng Linux trong Terminal.

Đọc CSV vào DataFrame của gấu trúc rất nhanh chóng và dễ dàng:

#import necessary modules
import pandas
result = pandas.read_csv('X:\data.csv')
print(result)

Kết quả của đọc CSV Panda thí dụ:

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

Thư viện rất hữu ích. Chỉ trong ba dòng mã bạn sẽ có kết quả tương tự như trước đó. Pandas biết rằng dòng đầu tiên của tên cột chứa CSV và nó sẽ tự động sử dụng chúng.

Viết tệp CSV bằng Pandas

Viết vào tệp CSV bằng Pandas cũng dễ như đọc. Ở đây bạn có thể thuyết phục trong đó. Trước tiên, bạn phải tạo DataFrame dựa trên những điều sau Python ghi vào mã 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)

Đây là đầu ra

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

Và tệp CSV được tạo tại vị trí đã chỉ định.

Viết tệp CSV bằng Pandas

Kết luận

Vậy là giờ bạn đã biết cách sử dụng phương pháp 'csv' cũng như cách đọc và ghi dữ liệu ở định dạng CSV. Tệp CSV được sử dụng rộng rãi trong các ứng dụng phần mềm vì chúng dễ đọc và quản lý, và kích thước nhỏ giúp chúng tương đối nhanh để xử lý và truyền tải.

Mô-đun csv cung cấp nhiều chức năng và lớp khác nhau cho phép bạn đọc và viết dễ dàng. Bạn có thể nhìn vào chính thức Python tài liệu và tìm thêm một số mẹo và mô-đun thú vị. CSV là cách tốt nhất để lưu, xem và gửi dữ liệu. Thực ra, nó không quá khó để học như bạn nghĩ lúc đầu. Nhưng chỉ cần luyện tập một chút, bạn sẽ thành thạo.

Pandas là một giải pháp thay thế tuyệt vời để đọc tệp CSV.

Ngoài ra, còn có nhiều cách khác để phân tích tệp văn bản bằng các thư viện như ANTLR, PLY và PlyPlus. Tất cả chúng đều có thể xử lý phân tích cú pháp hạng nặng và nếu thao tác Chuỗi đơn giản không hoạt động, bạn có thể sử dụng các biểu thức chính quy.