อ่าน CSV File ใน Python
CSV (Comma Separated Values) เป็น Plain Text File ที่คั่นค่าด้วย Comma แทน Tabular Data
รูปแบบ CSV
Sr.No,Name,City,Age 1,Rahul,Kolkata,21 2,Karan,Amritsar,23 3,Priya,Bangalore,20
อ่าน CSV ด้วย Module csv
import csv
with open('ttp.csv', 'r') as file:
filecontent = csv.reader(file)
for row in filecontent:
print(row)
ผลลัพธ์
['Sr.No', 'Name', 'City', 'Age'] ['1', 'Rahul', 'Kolkata', '21'] ['2', 'Karan', 'Amritsar', '23'] ['3', 'Priya', 'Bangalore', '20']
คำอธิบายบรรทัดต่อบรรทัด
import csv- Import Moduleopen('ttp.csv', 'r')- เปิดไฟล์ Mode Readcsv.reader(file)- สร้าง Reader Object (Iterable)for row in filecontent- Loop อ่านทีละ Row (แต่ละ Row เป็น List ของ Strings)
⚠️ สำคัญ: CSV และ Python File ต้องอยู่ Folder เดียวกัน
ถ้าอยู่คนละ Folder จะเกิด FileNotFoundError
อ่าน CSV ด้วย Custom Delimiter
ถ้าไฟล์ใช้ Delimiter อื่น (:, ;, |, Tab)
import csv
# Delimiter เป็น :
with open('ttp.csv', 'r') as file:
filecontent = csv.reader(file, delimiter=':')
for row in filecontent:
print(row)
ถ้าไม่ระบุ Delimiter (Default Comma) แต่ไฟล์ใช้ :
['Sr:No:Name:City:Age'] ['1:Rahul:Kolkata:21'] ['2:Karan:Amritsar:23'] ['3:Priya:Bangalore:20'] # ทั้ง Row เป็น 1 Element!
อ่าน CSV เป็น Dictionary (csv.DictReader)
import csv
with open('ttp.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
# {'Sr.No': '1', 'Name': 'Rahul', 'City': 'Kolkata', 'Age': '21'}
# เข้าถึงได้โดย row['Name'], row['Age'], etc.
เขียน CSV File
import csv
data = [
['Sr.No', 'Name', 'City', 'Age'],
[1, 'Rahul', 'Kolkata', 21],
[2, 'Karan', 'Amritsar', 23],
[3, 'Priya', 'Bangalore', 20]
]
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
# หรือ DictWriter
with open('output2.csv', 'w', newline='') as file:
fieldnames = ['Sr.No', 'Name', 'City', 'Age']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'Sr.No': 4, 'Name': 'New', 'City': 'City', 'Age': 25})
ใช้ pandas (แนะนำสำหรับ Data Analysis)
import pandas as pd
# อ่าน
df = pd.read_csv('ttp.csv')
print(df)
print(df['Name'].tolist())
# เขียน
df.to_csv('output_pandas.csv', index=False)
Common Issues
- Encoding: ใช้
open(..., encoding='utf-8')สำหรับภาษาไทย - newline='': ป้องกัน Blank Lines ใน Windows
- Quotechar: จัดการ Comma ใน Field ใช้
quoting=csv.QUOTE_ALL