Trong bài đăng này, chúng ta sẽ xem xét cách đọc và ghi tệp CSV bằng Python. Các ví dụ sử dụng mô-đun CSV và Pandas.
Python Đọc tệp CSV bằng mô-đun CSV
Ví dụ về mã này đọc một tệp có tên orders.csv
và lặp lại dữ liệu:
import csv
f = open("orders.csv", "rt")
orders = csv.reader(f)
for order in orders:
print(order)
f.close()
Đầu ra của đơn đặt hàng.csv:
['OrderID', 'CustomerID', 'OrderDate']
['10248', '4', '10/02/2020']
['10249', '2', '10/02/2020']
['10250', '7', '10/02/2020']
Đọc tệp CSV dưới dạng từ điển
Sử dụng DictReader
mỗi hàng trong tệp CSV được biểu diễn dưới dạng một hàng trong từ điển, với tiêu đề cột là khóa.
import csv
orders = csv.DictReader(open("orders.csv"))
for order in orders:
print(order)
Đầu ra của đơn đặt hàng.csv:
{'OrderID': '10248', 'CustomerID': '4', 'OrderDate': '10/02/2020'}
{'OrderID': '10249', 'CustomerID': '2', 'OrderDate': '10/02/2020'}
{'OrderID': '10250', 'CustomerID': '7', 'OrderDate': '10/02/2020'}
Đọc tệp CSV bằng Pandas
Để sử dụng Pandas, trước tiên chúng ta cần cài đặt thư viện Pandas.
Để cài đặt, hãy chạy lệnh sau:pip3 install pandas
.
import pandas
orders = pandas.read_csv('orders.csv')
print(orders)
Đầu ra của đơn đặt hàng.csv:
OrderID CustomerID OrderDate
10248 4 10/02/2020
10249 2 10/02/2020
10250 7 10/02/2020
Python Viết CSV bằng Pandas
from pandas import DataFrame
import pandas as pd
order = pd.DataFrame({'OrderID': ['10251', '10252', '10253'],
'CustomerID': ['5', '1', '8'],
'OrderDate': ['11/02/2020', '11/02/2020', '11/02/2020']})
order.to_csv('newOrders.csv', index=False)
Đầu ra của newOrders.csv:
OrderID,CustomerID,OrderDate
10251,5,11/02/2020
10252,1,11/02/2020
10253,8,11/02/2020
Nối dữ liệu vào tệp CSV hiện có
Chế độ mặc định khi ghi vào tệp csv là 'w'
. Nếu chúng tôi muốn nối dữ liệu vào tệp CSV hiện có, chúng tôi phải sử dụng chế độ nối thêm, ví dụ:mode='a'
from pandas import DataFrame
import pandas as pd
order = pd.DataFrame({'OrderID': ['10254'],
'CustomerID': ['3'],
'OrderDate': ['11/02/2020']})
order.to_csv('newOrders.csv', mode='a', index=False, header=False)
Đầu ra của newOrders.csv:
OrderID,CustomerID,OrderDate
10251,5,11/02/2020
10252,1,11/02/2020
10253,8,11/02/2020
10254,3,11/02/2020
Python Viết CSV bằng Mô-đun CSV
N.B. Hàng đầu tiên được sử dụng làm tiêu đề cột
import csv
with open('orders.csv', 'w', newline='') as file:
order = csv.writer(file)
order.writerow(['OrderID', 'CustomerID', 'OrderDate'])
order.writerow(['10251', '6', '11/02/2020'])
order.writerow(['10252', '9', '11/02/2020'])
order.writerow(['10253', '5', '11/02/2020'])
Đầu ra của đơn đặt hàng.csv:
OrderID,CustomerID,OrderDate
10251,6,11/02/2020
10252,9,11/02/2020
10253,5,11/02/2020
Nếu bạn muốn thêm vào tệp csv hiện có bằng mô-đun csv, bạn cần nhập 'a'
tham số cho open()
phương pháp. Bạn cũng cần bỏ qua "tiêu đề".
Ví dụ:
with open('orders.csv', 'a', newline='') as file:
order = csv.writer(file)
order.writerow(['10251', '6', '11/02/2020'])
Viết tệp CSV bằng DictWriter
Chúng tôi cũng có thể sử dụng DictWriter
phương thức của csv
lớp để tạo và ghi tệp CSV.
import csv
with open('orders.csv', 'w', newline='') as file:
fieldnames = ['OrderID', 'CustomerID', 'OrderDate']
order = csv.DictWriter(file, fieldnames=fieldnames)
order.writeheader()
order.writerow({'OrderID': '10251', 'CustomerID': 7, 'OrderDate': '11/02/2020'})
order.writerow({'OrderID': '10252', 'CustomerID': 3, 'OrderDate': '11/02/2020'})
order.writerow({'OrderID': '10253', 'CustomerID': 1, 'OrderDate': '11/02/2020'})
Đầu ra của đơn đặt hàng.csv:
OrderID,CustomerID,OrderDate
10251,7,11/02/2020
10252,3,11/02/2020
10253,1,11/02/2020