วิธีอ่านไฟล์ 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
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 ในรูปแบบ 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 โดยใช้ 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' แล้ว และยังอ่านและเขียนข้อมูลในรูปแบบ CSV ได้อีกด้วย ไฟล์ CSV ถูกใช้กันอย่างแพร่หลายในแอปพลิเคชันซอฟต์แวร์ เนื่องจากอ่านและจัดการได้ง่าย และด้วยขนาดที่เล็กทำให้ประมวลผลและส่งข้อมูลได้ค่อนข้างเร็ว
โมดูล csv มีฟังก์ชันและคลาสต่างๆ มากมายที่ช่วยให้คุณสามารถอ่านและเขียนได้อย่างง่ายดาย คุณสามารถดูอย่างเป็นทางการ Python เอกสารประกอบและค้นหาเคล็ดลับและโมดูลที่น่าสนใจเพิ่มเติม CSV เป็นวิธีที่ดีที่สุดในการบันทึก ดู และส่งข้อมูล จริงๆ แล้วการเรียนรู้เรื่องนี้ไม่ได้ยากอย่างที่คิดในตอนแรก แต่ด้วยการฝึกฝนเพียงเล็กน้อย คุณจะเชี่ยวชาญมันได้
Pandas เป็นทางเลือกที่ดีในการอ่านไฟล์ CSV
นอกจากนี้ยังมีวิธีอื่นในการแยกวิเคราะห์ไฟล์ข้อความด้วยไลบรารีเช่น ANTLR, PLY และ PlyPlus พวกมันทั้งหมดสามารถจัดการกับการแยกวิเคราะห์แบบทำงานหนักได้ และหากการจัดการสตริงแบบธรรมดาไม่ได้ผล ก็ยังมีนิพจน์ทั่วไปที่คุณสามารถใช้ได้