Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Đọc và Ghi file CSV trong Python với csv module và Pandas - Hướng dẫn từng bước

Bài viết trình bày cách đọc và ghi file CSV trong Python. Ví dụ dùng module csv và pandas.

Đọc CSV file dùng CSV Module

Đọc file orders.csv và lặp qua dữ liệu:

import csv
f = open("orders.csv", "rt")
orders = csv.reader(f)
for order in orders:
    print(order)
f.close()

Kết quả orders.csv:

['OrderID', 'CustomerID', 'OrderDate']
['10248', '4', '10/02/2020']
['10249', '2', '10/02/2020']
['10250', '7', '10/02/2020']

Đọc CSV file dưới dạng Dictionary

Dùng DictReader: mỗi row là dict, column header là key.

import csv
orders = csv.DictReader(open("orders.csv"))
for order in orders:
    print(order)

Kết quả:

{'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 CSV file dùng Pandas

Cài Pandas: pip3 install pandas.

import pandas
orders = pandas.read_csv('orders.csv')
print(orders)

Kết quả (bảng đẹp):

   OrderID  CustomerID  OrderDate
0    10248           4  10/02/2020
1    10249           2  10/02/2020
2    10250           7  10/02/2020

Ghi CSV dù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)

Kết quả newOrders.csv:

OrderID,CustomerID,OrderDate
10251,5,11/02/2020
10252,1,11/02/2020
10253,8,11/02/2020

Append dữ liệu vào CSV có sẵn (Pandas)

Mặc định mode 'w'. Để append, dùng mode='a' và header=False.

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)

Kết quả: dòng mới được thêm vào cuối file.

Ghi CSV dùng CSV Module

Lưu ý: Dòng đầu dùng làm header.

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

Kết quả orders.csv:

OrderID,CustomerID,OrderDate
10251,6,11/02/2020
10252,9,11/02/2020
10253,5,11/02/2020

Để append với csv module: mode 'a' và bỏ qua header.

with open('orders.csv', 'a', newline='') as file:
    order = csv.writer(file)
    order.writerow(['10251', '6', '11/02/2020'])

Ghi CSV file với DictWriter

Dùng DictWriter của class 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'})

Kết quả orders.csv:

OrderID,CustomerID,OrderDate
10251,7,11/02/2020
10252,3,11/02/2020
10253,1,11/02/2020