Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python อ่านเขียนไฟล์ CSV

ในบทความนี้ เราจะมาดูวิธีการอ่านและเขียนไฟล์ 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