วิธีอ่านไฟล์ CSV ในรูปแบบ Python (โมดูล ตัวอย่างนุ่น)

⚡ สรุปอย่างชาญฉลาด

ไฟล์ CSV จัดเก็บข้อมูลตารางในรูปแบบข้อความธรรมดา โดยใช้เครื่องหมายจุลภาคคั่นคอลัมน์และขึ้นบรรทัดใหม่คั่นแถว ในที่นี้คุณจะได้เรียนรู้วิธีการอ่านและเขียนไฟล์ CSV Python โดยใช้โมดูล csv ในตัวและไลบรารี pandas

  • 📄 มันคืออะไร: ไฟล์ CSV จัดเก็บข้อมูลในรูปแบบตารางโดยใช้เครื่องหมายจุลภาคคั่นระหว่างข้อมูล
  • ???? โปรแกรมอ่านไฟล์ csv: csv.reader() อ่านแถวจากไฟล์ CSV เป็นลิสต์
  • 📚 โปรแกรมอ่านพจนานุกรม: csv.DictReader() จะอ่านแต่ละแถวลงในพจนานุกรมที่มีการเรียงลำดับ
  • 🇧🇷 csv.writer: ฟังก์ชัน csv.writer() และ writerow() ใช้สำหรับเขียนแถวลงในไฟล์ CSV
  • 🐼 แพนด้า: ฟังก์ชัน pandas.read_csv() และ to_csv() สามารถอ่านและเขียนไฟล์ CSV ได้ในบรรทัดเดียว
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI เช่น Copilot สามารถสร้างโค้ดสำหรับอ่านและเขียนไฟล์ CSV ได้ทันที

อ่านไฟล์ CSV ใน Python

ไฟล์ CSV คืออะไร

A ไฟล์ CSV เป็นไฟล์ข้อความธรรมดาประเภทธรรมดาซึ่งใช้โครงสร้างเฉพาะเพื่อจัดเรียงข้อมูลแบบตาราง รูปแบบมาตรฐานของไฟล์ CSV ถูกกำหนดโดยข้อมูลแถวและคอลัมน์ โดยที่การขึ้นบรรทัดใหม่จะสิ้นสุดแต่ละแถวเพื่อเริ่มต้นแถวถัดไป และแต่ละคอลัมน์จะถูกคั่นด้วยเครื่องหมายจุลภาคภายในแถว

CSV เป็นรูปแบบทั่วไปสำหรับการแลกเปลี่ยนข้อมูล เนื่องจากมีขนาดกะทัดรัด เรียบง่าย และเป็นแบบทั่วไป บริการออนไลน์จำนวนมากอนุญาตให้ผู้ใช้ส่งออกข้อมูลแบบตารางจากเว็บไซต์เป็นไฟล์ CSV ไฟล์ CSV จะเปิดขึ้นใน Excel และฐานข้อมูลเกือบทั้งหมดมีเครื่องมือสำหรับอนุญาตให้นำเข้าจากไฟล์ CSV

ไฟล์ตัวอย่าง CSV

ข้อมูลในรูปแบบของตารางเรียกอีกอย่างว่า CSV (ค่าที่คั่นด้วยเครื่องหมายจุลภาค) ซึ่งแปลว่า "ค่าที่คั่นด้วยเครื่องหมายจุลภาค" อย่างแท้จริง นี่คือรูปแบบข้อความที่มีไว้สำหรับการนำเสนอข้อมูลแบบตาราง แต่ละบรรทัดของไฟล์คือหนึ่งบรรทัดของตาราง ค่าของแต่ละคอลัมน์จะถูกคั่นด้วยสัญลักษณ์ตัวคั่น เช่น เครื่องหมายจุลภาค (,) เครื่องหมายอัฒภาค (;) หรือสัญลักษณ์อื่น CSV สามารถอ่านและประมวลผลได้อย่างง่ายดาย Python.

พิจารณาตารางต่อไปนี้

ข้อมูลตาราง

ภาษาโปรแกรม ออกแบบโดย ปรากฏ นามสกุล
Python Guido van Rossum 1991 .py
Java เจมส์กอสลิง 1995 .ชวา
C++ Bjarne Stroustrup 1983 .ซีพีพี

คุณสามารถแสดงตารางนี้ในรูปแบบ CSV ได้ดังนี้

ข้อมูล CSV

ภาษาโปรแกรม ออกแบบโดย ปรากฏ ส่วนขยาย

Python, กุยโด ฟาน รอสซุม, 1991, .py

Java, เจมส์ กอสลิง, 1995, .java

C++, บียาร์น สตรุสทรัป,1983,.cpp

ดังที่คุณเห็นแต่ละแถวคือบรรทัดใหม่ และแต่ละคอลัมน์จะถูกคั่นด้วยเครื่องหมายจุลภาค นี่คือตัวอย่างลักษณะของไฟล์ CSV

ดาวน์โหลดข้อมูล CSV

Python โมดูล CSV

Python จัดเตรียมโมดูล CSV เพื่อจัดการไฟล์ CSV หากต้องการอ่าน/เขียนข้อมูล คุณต้องวนซ้ำแถวต่างๆ ของ CSV คุณต้องใช้วิธีแยกเพื่อรับข้อมูลจากคอลัมน์ที่ระบุ

ฟังก์ชั่นโมดูล CSV

ในเอกสารโมดูล CSV คุณจะพบฟังก์ชันต่อไปนี้:

  • csv.field_size_limit – คืนขนาดฟิลด์สูงสุด
  • csv.get_dialect – รับภาษาถิ่นที่เกี่ยวข้องกับชื่อ
  • csv.list_dialects – แสดงภาษาถิ่นที่ลงทะเบียนไว้ทั้งหมด
  • csv.reader – อ่านข้อมูลจากไฟล์ csv
  • csv.register_dialect – เชื่อมโยงภาษาถิ่นกับชื่อ
  • csv.writer – เขียนข้อมูลลงในไฟล์ csv
  • csv.unregister_dialect – ลบภาษาถิ่นที่เกี่ยวข้องกับชื่อรีจิสทรีภาษาถิ่น
  • csv.QUOTE_ALL – อ้างอิงทุกอย่าง ไม่ว่าจะเป็นประเภทใดก็ตาม
  • csv.QUOTE_MINIMAL – ฟิลด์คำพูดที่มีอักขระพิเศษ
  • csv.QUOTE_NONNUMERIC – อ้างอิงฟิลด์ทั้งหมดที่ไม่ใช่ค่าตัวเลข
  • csv.QUOTE_NONE – อย่าอ้างอิงสิ่งใดๆ ในผลลัพธ์

ในบทช่วยสอนนี้ เราจะเน้นเฉพาะฟังก์ชันตัวอ่านและตัวเขียนเท่านั้น ซึ่งช่วยให้คุณสามารถแก้ไข ปรับเปลี่ยน และจัดการข้อมูลในไฟล์ CSV ได้

วิธีอ่านไฟล์ CSV ในรูปแบบ Python

ด้านล่างนี้เป็นขั้นตอนในการอ่านไฟล์ CSV Python.

ขั้นตอน 1) หากต้องการอ่านข้อมูลจากไฟล์ CSV คุณต้องใช้ฟังก์ชันตัวอ่านเพื่อสร้างออบเจ็กต์ตัวอ่าน

ฟังก์ชันตัวอ่านได้รับการพัฒนาเพื่อใช้แต่ละแถวของไฟล์และสร้างรายการคอลัมน์ทั้งหมด จากนั้น คุณต้องเลือกคอลัมน์ที่คุณต้องการให้มีข้อมูลตัวแปร

มันฟังดูซับซ้อนมากกว่าที่เป็นอยู่มาก ลองมาดูเรื่องนี้กัน Python โค้ดสำหรับอ่านไฟล์ CSV แล้วเราจะพบว่าการทำงานกับไฟล์ CSV นั้นไม่ใช่เรื่องยาก

#import necessary modules
import csv
with open('X:\data.csv','rt')as f:
  data = csv.reader(f)
  for row in data:
        print(row)

ขั้นตอน 2) เมื่อคุณรันโปรแกรมด้านบน ผลลัพธ์จะเป็น:

['Programming language; Designed by; Appeared; Extension']
['Python; Guido van Rossum; 1991; .py']
['Java; James Gosling; 1995; .java']
['C++; Bjarne Stroustrup;1983;.cpp']

วิธีอ่านไฟล์ CSV ลงในพจนานุกรม Python

คุณยังสามารถใช้ DictReader เพื่ออ่านไฟล์ CSV ได้อีกด้วย ผลลัพธ์จะถูกตีความว่าเป็นพจนานุกรมโดยที่แถวส่วนหัวเป็นคีย์ และแถวอื่นๆ เป็นค่า

ลองพิจารณาโค้ดต่อไปนี้

#import necessary modules
import csv

reader = csv.DictReader(open("file2.csv"))
for raw in reader:
    print(raw)

ผลลัพธ์ของรหัสนี้คือ:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])
OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])
OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

อ่านไฟล์ CSV ลงในพจนานุกรม

และวิธีนี้ในการอ่านข้อมูลจากไฟล์ CSV ทำได้ง่ายกว่าวิธีก่อนหน้านี้มาก อย่างไรก็ตาม นี่ไม่ใช่วิธีที่ดีที่สุดในการอ่านข้อมูล

วิธีเขียนไฟล์ CSV ในรูปแบบ Python

ต่อไปนี้เป็นวิธีเขียนไฟล์ CSV Python:

เมื่อคุณมีชุดข้อมูลที่คุณต้องการเก็บไว้ในไฟล์ CSV คุณต้องใช้ฟังก์ชัน Writer() หากต้องการวนซ้ำข้อมูลบนแถว (บรรทัด) คุณต้องใช้ฟังก์ชัน writerow()

พิจารณาตัวอย่างต่อไปนี้ เราเขียนข้อมูลลงในไฟล์ “writeData.csv” โดยที่ตัวคั่นเป็นเครื่องหมายอะพอสทรอฟี

#import necessary modules
import csv

with open('X:\writeData.csv', mode='w') as file:
    writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    #way to write to csv file
    writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])
    writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])
    writer.writerow(['Java', 'James Gosling', '1995', '.java'])
    writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

ผลลัพธ์ในไฟล์ csv คือ:

Programming language, Designed by, Appeared, Extension 
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp

เขียนไฟล์ CSV ลงไป Python

อ่านไฟล์ CSV โดยใช้ Pandas

Pandas เป็นไลบรารีโอเพ่นซอร์สที่ให้คุณนำเข้า CSV ได้ Python และดำเนินการจัดการข้อมูล Pandas มอบวิธีง่ายๆ ในการสร้าง จัดการ และลบข้อมูล

คุณต้องติดตั้งไลบรารี่ pandas ด้วยคำสั่ง pip install pandas ใน Windowsคุณจะดำเนินการคำสั่งนี้ใน Command Prompt ขณะที่อยู่ใน Linux ใน Terminal

การอ่าน CSV ลงใน DataFrame ของ pandas นั้นรวดเร็วและง่ายดายมาก:

#import necessary modules
import pandas
result = pandas.read_csv('X:\data.csv')
print(result)

ผลลัพธ์ของ อ่าน CSV Pandas ตัวอย่าง:

Programming language, Designed by, Appeared, Extension 
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

ห้องสมุดที่มีประโยชน์มาก ด้วยโค้ดเพียงสามบรรทัด คุณจะได้ผลลัพธ์เหมือนกับก่อนหน้านี้ แพนด้ารู้ว่าบรรทัดแรกของ CSV มีชื่อคอลัมน์ และจะใช้ชื่อคอลัมน์เหล่านั้นโดยอัตโนมัติ

เขียนไฟล์ CSV โดยใช้ Pandas

การเขียนไฟล์ CSV ด้วย Pandas นั้นง่ายพอๆ กับการอ่าน คุณสามารถมั่นใจได้ในเรื่องนี้ ก่อนอื่นคุณต้องสร้าง DataFrame ตามข้อมูลต่อไปนี้ Python เขียนเป็นโค้ด CSV

from pandas import DataFrame
C = {'Programming language': ['Python','Java', 'C++'],
        'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
        'Appeared': ['1991', '1995', '1985'],
        'Extension': ['.py', '.java', '.cpp'],
    }
df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])
export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored
print (df)

นี่คือผลลัพธ์

Programming language, Designed by, Appeared, Extension
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

และไฟล์ CSV จะถูกสร้างขึ้นในตำแหน่งที่ระบุ

เขียนไฟล์ CSV โดยใช้ Pandas

คำถามที่พบบ่อย

ไฟล์ CSV (comma-separated values) คือไฟล์ข้อความธรรมดาที่จัดเก็บข้อมูลในรูปแบบตาราง แต่ละบรรทัดคือแถว และใช้เครื่องหมายจุลภาคคั่นค่าในแต่ละคอลัมน์

นำเข้าโมดูล csv เปิดไฟล์ และส่งไฟล์นั้นไปยัง csv.reader() เพื่อวนลูปอ่านแต่ละแถวเป็นลิสต์ หรืออีกวิธีหนึ่งคือใช้ csv.DictReader() เพื่ออ่านแต่ละแถวเป็นพจนานุกรม

เปิดไฟล์ในโหมดเขียน สร้างอ็อบเจ็กต์ csv.writer() แล้วเรียกใช้ writerrow() สำหรับแต่ละแถว หรือ writerrows() สำหรับหลายแถว ตัวเขียนจะจัดการการใส่เครื่องหมายคำพูดและตัวคั่นให้คุณโดยอัตโนมัติ

csv.DictReader() อ่านไฟล์ CSV ลงในพจนานุกรมที่มีลำดับ โดยใช้แถวส่วนหัวเป็นคีย์ วิธีนี้ช่วยให้คุณเข้าถึงแต่ละค่าได้โดยใช้ชื่อคอลัมน์แทนที่จะใช้ดัชนี

เรียกใช้ pandas.read_csv('file.csv') ซึ่งจะโหลดไฟล์ CSV ลงใน DataFrame ในบรรทัดเดียว Pandas จะใช้แถวแรกเป็นส่วนหัวของคอลัมน์โดยอัตโนมัติ

ผู้ช่วย AI เช่น GitHub Copilot สามารถเติมข้อความอัตโนมัติสำหรับการเรียกใช้ไฟล์ CSV และ Pandas สร้างลูปการอ่านและการเขียน และแนะนำตัวคั่นหรือตัวเลือกการอ้างอิงที่เหมาะสมจากคำอธิบายสั้นๆ

ใช่แล้ว เครื่องมือที่ขับเคลื่อนด้วย AI สามารถทำการแยกวิเคราะห์ ทำความสะอาด และแปลงข้อมูล CSV โดยอัตโนมัติ สร้างไปป์ไลน์ pandas และเพิ่มการจัดการข้อผิดพลาดสำหรับแถวที่ผิดรูปแบบหรือคอลัมน์ที่หายไปได้

ใช้โมดูล csv ในตัวสำหรับการอ่านและเขียนข้อมูลที่ง่ายและเบา เลือกใช้ pandas เมื่อคุณต้องการกรอง แปลง หรือวิเคราะห์ชุดข้อมูล CSV ขนาดใหญ่ได้อย่างมีประสิทธิภาพ

สรุปโพสต์นี้ด้วย: