วิธีแก้ไขใน pandas: typeerror: ไม่มีข้อมูลตัวเลขให้ลงจุด


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้นุ่นคือ:

 TypeError : no numeric data to plot

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามพล็อตค่าจาก Pandas DataFrame แต่ไม่มีค่าตัวเลขให้ลงจุด

ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณคิดว่าคอลัมน์บางคอลัมน์ใน DataFrame เป็นตัวเลข แต่กลับกลายเป็นประเภทข้อมูลอื่น

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B'],
                   ' points ': ['5', '7', '7', '9', '12'],
                   ' rebounds ': ['11', '8', '10', '6', '6'],
                   ' blocks ': ['4', '7', '7', '6', '5']})

#view DataFrame
df

	team points rebound blocks
0 A 5 11 4
1 To 7 8 7
2 B 7 10 7
3 B 9 6 6
4 B 12 6 5

ตอนนี้ สมมติว่าเราพยายามสร้างพล็อตเชิงเส้นสำหรับตัวแปรสามตัวที่เราคิดว่าเป็นตัวเลข: จุด การตีกลับ และบล็อก:

 #attempt to create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()

ValueError : no numeric data to plot

เราได้รับข้อผิดพลาดเนื่องจากไม่มีคอลัมน์ใดที่เป็นตัวเลขจริงๆ

วิธีการแก้ไขข้อผิดพลาด

เราสามารถใช้ฟังก์ชัน dtypes เพื่อดูว่าแต่ละคอลัมน์ใน DataFrame เป็นของประเภทข้อมูลใด:

 #display data type of each column in DataFrame
df. dtypes

team object
points object
rebound object
blocks object
dtype:object

เราจะเห็นได้ว่าไม่มีคอลัมน์ใดใน DataFrame ที่เป็นตัวเลข

เราสามารถใช้ฟังก์ชัน .astype() เพื่อแปลงคอลัมน์ที่ระบุให้เป็นค่าตัวเลขได้:

 #convert points, rebounds, and blocks columns to numeric
df[' points ']=df[' points ']. astype (float)
df[' rebounds ']=df[' rebounds ']. astype (float)
df[' blocks ']=df[' blocks ']. astype (float)

จากนั้นเราสามารถนำฟังก์ชัน plot() กลับมาใช้ใหม่ได้:

 #create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot () 

เราสามารถสร้างพล็อตเชิงเส้นสำหรับจุด การตีกลับ และบล็อกได้สำเร็จ เนื่องจากตอนนี้ตัวแปรแต่ละตัวเป็นตัวเลขแล้ว

เราสามารถตรวจสอบสิ่งนี้ได้โดยใช้ฟังก์ชัน dtypes อีกครั้ง:

 #display data type of each column in DataFrame
df. dtypes

team object
float64 points
rebounds float64
blocks float64
dtype:object

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:

วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

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

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