Pandas: นำเข้า csv โดยมีจำนวนคอลัมน์ต่อแถวต่างกัน


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อนำเข้าไฟล์ CSV ลงในแพนด้าได้เมื่อมีจำนวนคอลัมน์ต่อแถวต่างกัน:

 df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 ))

ค่าภายในฟังก์ชัน range() ควรเป็นจำนวนคอลัมน์ในแถวโดยมีจำนวนคอลัมน์สูงสุด

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: นำเข้า CSV ลงใน Pandas โดยมีจำนวนคอลัมน์ต่อแถวต่างกัน

สมมติว่าเรามีไฟล์ CSV ต่อไปนี้ชื่อ uneven_data.csv :

โปรดทราบว่าแต่ละแถวมีจำนวนคอลัมน์ไม่เท่ากัน

หากเราพยายามใช้ฟังก์ชัน read_csv() เพื่อนำเข้าไฟล์ CSV นี้ลงใน DataFrame ของ pandas เราจะได้รับข้อผิดพลาด:

 import pandas as pd

#attempt to import CSV file with differing number of columns per row
df = pd. read_csv (' uneven_data.csv ', header= None )

ParserError: Error tokenizing data. C error: Expected 2 fields in line 2, saw 4

เราได้รับ ParserError ซึ่งบอกเราว่าแพนด้าคาดว่าจะมี 2 ฟิลด์ (เนื่องจากนั่นคือจำนวนคอลัมน์ในแถวแรก) แต่เห็น 4

ข้อผิดพลาดนี้บอกเราว่าจำนวนคอลัมน์สูงสุดในแถวที่กำหนดคือ 4

ดังนั้น เราสามารถนำเข้าไฟล์ CSV และระบุค่า range(4) ให้กับอาร์กิวเมนต์ ของชื่อได้ :

 import pandas as pd

#import CSV file with differing number of columns per row
df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 )))

#view DataFrame
print (df)

   0 1 2 3
0 to 22 NaN NaN
1 B 16 10.0 12.0
2 C 25 10.0 NaN
3 D 14 2.0 7.0
4 E 20 4.0 NaN

โปรดทราบว่าเราสามารถนำเข้าไฟล์ CSV ไปยัง Pandas DataFrame ได้สำเร็จโดยไม่มีข้อผิดพลาด เนื่องจากเราบอกอย่างชัดเจนว่า Pandas คาดว่าจะมี 4 คอลัมน์

ตามค่าเริ่มต้น แพนด้าจะเติมค่าที่หายไปทั้งหมดในแต่ละแถวด้วย NaN

หากคุณต้องการให้ค่าที่หายไปปรากฏเป็นศูนย์ คุณสามารถใช้ฟังก์ชัน fillna() ได้ดังนี้

 #fill NaN values with zeros
df_new = df. fillna ( 0 )

#view new DataFrame
print (df_new)

   0 1 2 3
0 to 22 0.0 0.0
1 B 16 10.0 12.0
2 C 25 10.0 0.0
3 D 14 2.0 7.0
4 E 20 4.0 0.0

ค่า NaN แต่ละค่าใน DataFrame ถูกแทนที่ด้วยศูนย์แล้ว

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มของฟังก์ชัน pandas read_csv() ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีทำงานทั่วไปอื่นๆ ใน Python:

Pandas: วิธีข้ามบรรทัดเมื่ออ่านไฟล์ CSV
Pandas: วิธีเพิ่มข้อมูลลงในไฟล์ CSV ที่มีอยู่
Pandas: วิธีระบุประเภทเมื่อนำเข้าไฟล์ CSV
Pandas: ตั้งชื่อคอลัมน์เมื่อนำเข้าไฟล์ CSV

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *