ในบทความนี้ เราจะมาดูวิธีการอ่านและเขียนไฟล์ CSV ใน Python ตัวอย่างใช้โมดูล CSV และ Pandas
Python อ่านไฟล์ CSV โดยใช้โมดูล CSV
ตัวอย่างโค้ดนี้อ่านไฟล์ชื่อ orders.csv
และวนซ้ำผ่านข้อมูล:
import csv
f = open("orders.csv", "rt")
orders = csv.reader(f)
for order in orders:
print(order)
f.close()
ผลลัพธ์ของ orders.csv:
['OrderID', 'CustomerID', 'OrderDate']
['10248', '4', '10/02/2020']
['10249', '2', '10/02/2020']
['10250', '7', '10/02/2020']
อ่านไฟล์ CSV เป็นพจนานุกรม
การใช้ DictReader
เมธอดแต่ละแถวในไฟล์ CSV จะแสดงเป็นแถวในพจนานุกรม โดยที่ส่วนหัวของคอลัมน์คือคีย์
import csv
orders = csv.DictReader(open("orders.csv"))
for order in orders:
print(order)
ผลลัพธ์ของ orders.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'}
อ่านไฟล์ CSV โดยใช้ Pandas
ในการใช้ Pandas เราต้องติดตั้งไลบรารี Pandas ก่อน
ในการติดตั้ง ให้รันคำสั่งนี้:pip3 install pandas
.
import pandas
orders = pandas.read_csv('orders.csv')
print(orders)
ผลลัพธ์ของ orders.csv:
OrderID CustomerID OrderDate
10248 4 10/02/2020
10249 2 10/02/2020
10250 7 10/02/2020
Python เขียน CSV โดยใช้ 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)
ผลลัพธ์ของ newOrders.csv:
OrderID,CustomerID,OrderDate
10251,5,11/02/2020
10252,1,11/02/2020
10253,8,11/02/2020
ผนวกข้อมูลเข้ากับไฟล์ CSV ที่มีอยู่
โหมดเริ่มต้นเมื่อเขียนไปยังไฟล์ csv คือ 'w'
. หากเราต้องการผนวกข้อมูลเข้ากับไฟล์ CSV ที่มีอยู่ เราต้องใช้โหมดผนวกข้อมูล เช่น 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)
ผลลัพธ์ของ 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 เขียน CSV โดยใช้โมดูล CSV
เอ็นบี แถวแรกใช้เป็นส่วนหัวของคอลัมน์
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'])
ผลลัพธ์ของ orders.csv:
OrderID,CustomerID,OrderDate
10251,6,11/02/2020
10252,9,11/02/2020
10253,5,11/02/2020
หากคุณต้องการผนวกไฟล์ csv ที่มีอยู่โดยใช้โมดูล csv คุณต้องส่งผ่าน 'a'
พารามิเตอร์ไปยัง open()
กระบวนการ. คุณต้องข้าม "ส่วนหัว" ด้วย
ตัวอย่างเช่น:
with open('orders.csv', 'a', newline='') as file:
order = csv.writer(file)
order.writerow(['10251', '6', '11/02/2020'])
เขียนไฟล์ CSV ด้วย DictWriter
นอกจากนี้เรายังสามารถใช้ DictWriter
วิธีการของ csv
เพื่อสร้างและเขียนไฟล์ 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'})
ผลลัพธ์ของ orders.csv:
OrderID,CustomerID,OrderDate
10251,7,11/02/2020
10252,3,11/02/2020
10253,1,11/02/2020