Làm việc với tệp CSV: Hướng dẫn chọn thư viện phù hợp
By JoeVu, at: 17:42 Ngày 05 tháng 10 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes


1. Giới thiệu
CSV (Comma-Separated Values) là định dạng phổ biến để lưu trữ dữ liệu dạng bảng, và làm việc với chúng một cách lập trình là một nhiệm vụ thường gặp đối với các nhà phát triển và nhà phân tích dữ liệu. Bài viết này khám phá các thư viện Python khác nhau để phân tích cú pháp và thao tác các tệp CSV, hướng dẫn bạn lựa chọn thư viện phù hợp với nhu cầu cụ thể của mình.
Một ví dụ về tệp CSV là
first_name,last_name,address,city,state,postal_code
John,Doe,120 jefferson st.,Riverside, NJ, 08075
Jack,McGinnis,220 hobo Av.,Phila, PA,09119
"John ""Da Man""",Repici,120 Jefferson St.,Riverside, NJ,08075
Stephen,Tyler,"7452 Terrace ""At the Plaza"" road",SomeTown,SD, 91234
,Blankman,,SomeTown, SD, 00298
"Joan ""the bone"", Anne",Jet,"9th, at Terrace plc",Desert City,CO,00123
2. Chọn thư viện phù hợp
Mô-đun CSV (Tích hợp sẵn)
Mô-đun CSV là một mô-đun Python tích hợp sẵn cung cấp chức năng để đọc và ghi các tệp CSV. Đây là một lựa chọn nhẹ, phù hợp với các tác vụ CSV đơn giản, cung cấp các chức năng cơ bản mà không cần phụ thuộc bổ sung.
Pandas
Pandas, một thư viện thao tác dữ liệu mạnh mẽ, cũng thành thạo trong việc xử lý các tệp CSV. Nó cung cấp một giao diện cấp cao để làm việc với dữ liệu dạng bảng, làm cho nó trở thành một lựa chọn tuyệt vời cho các tập dữ liệu lớn và các tác vụ phân tích dữ liệu phức tạp.
csvkit
csvkit là một thư viện bên ngoài mở rộng chức năng của mô-đun CSV tích hợp sẵn. Nó cung cấp các tính năng bổ sung như xác thực tệp CSV, truy vấn kiểu SQL và hơn thế nữa. csvkit là một lựa chọn tuyệt vời khi bạn cần các khả năng nâng cao vượt ra ngoài các chức năng CSV cơ bản.
Dask
Dask là một thư viện tính toán song song tích hợp tốt với Pandas và được thiết kế để xử lý các tập dữ liệu lớn hơn bộ nhớ. Nó có thể hiệu quả xử lý và thao tác các tệp CSV song song, làm cho nó phù hợp với các kịch bản dữ liệu lớn.
3. Sử dụng thư viện: Cài đặt và các thao tác thông thường
Mô-đun CSV (Tích hợp sẵn)
Trường hợp sử dụng:
-
Đọc tệp CSV:
import csv
with open('example.csv', 'r') as file:
reader = csv.reader(file)
data = list(reader) -
Ghi dữ liệu vào tệp CSV:
with open('new_data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
Pandas
Cài đặt:
pip install pandas
Trường hợp sử dụng:
-
Đọc tệp CSV:
import pandas as pd
df = pd.read_csv('example.csv') -
Ghi dữ liệu vào tệp CSV:
df.to_csv('new_data.csv', index=False)
csvkit
Cài đặt:
pip install csvkit
Trường hợp sử dụng:
-
Đọc tệp CSV:
csvlook example.csv
-
Ghi dữ liệu vào tệp CSV:
csvformat -U 1 new_data.csv > formatted_data.csv
Dask
Cài đặt:
pip install dask
Trường hợp sử dụng:
-
Đọc tệp CSV:
import dask.dataframe as dd
df = dd.read_csv('example.csv') -
Ghi dữ liệu vào tệp CSV:
df.to_csv('new_data.csv', index=False, single_file=True)
4. Cách xử lý tệp CSV lớn
Xử lý các tệp CSV lớn một cách hiệu quả là một thách thức phổ biến. Dưới đây là các ví dụ sử dụng Pandas và Dask để xử lý các tệp CSV lớn:
Pandas
Trường hợp sử dụng: Đọc tệp CSV lớn theo từng đoạn:
import pandas as pd
chunk_size = 100000 # Điều chỉnh kích thước đoạn dựa trên bộ nhớ của hệ thống
chunks = pd.read_csv('big_data.csv', chunksize=chunk_size)
for chunk in chunks:
# Xử lý từng đoạn theo yêu cầu
process_chunk(chunk)
Dask
Trường hợp sử dụng: Xử lý song song cho các tệp CSV lớn:
import dask.dataframe as dd
df = dd.read_csv('big_data.csv')
# Thực hiện tính toán song song
result = df.groupby('column_name').mean()
# Tính toán và lấy kết quả
result.compute()
5. Kết luận
Việc lựa chọn thư viện phù hợp để làm việc với các tệp CSV phụ thuộc vào độ phức tạp của dữ liệu và các tác vụ cụ thể mà bạn cần thực hiện. Mô-đun CSV tích hợp sẵn phù hợp với các thao tác đơn giản, trong khi Pandas và Dask cung cấp các tính năng nâng cao cho phân tích dữ liệu và xử lý các tập dữ liệu lớn. csvkit cung cấp các chức năng bổ sung vượt ra ngoài mô-đun CSV tiêu chuẩn. Hãy cân nhắc các yêu cầu của dự án để chọn thư viện phù hợp nhất với nhu cầu của bạn và quản lý hiệu quả các tệp CSV trong Python.