Computer >> Máy Tính >  >> Lập trình >> Python

Python Đọc Ghi tệp CSV

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