Pandalarda nasıl düzeltilir: typeerror: çizilecek sayısal veri yok
Pandaları kullanırken karşılaşabileceğiniz bir hata:
TypeError : no numeric data to plot
Bu hata, bir pandas DataFrame’den değerleri çizmeye çalıştığınızda ortaya çıkar, ancak çizilecek sayısal değer yoktur.
Bu hata genellikle DataFrame’deki belirli bir sütunun sayısal olduğunu düşündüğünüzde ortaya çıkar, ancak farklı bir veri türü olduğu ortaya çıkar.
Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
Aşağıdaki pandalara sahip olduğumuzu varsayalım 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
Şimdi sayısal olduğunu düşündüğümüz üç değişken için doğrusal bir grafik oluşturmaya çalıştığımızı varsayalım: noktalar, sıçramalar ve bloklar:
#attempt to create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
ValueError : no numeric data to plot
Bu sütunların hiçbiri aslında sayısal olmadığından hata alıyoruz.
Hata nasıl düzeltilir?
DataFrame’imizdeki her bir sütunun hangi veri türüne ait olduğunu görmek için dtypes işlevini kullanabiliriz:
#display data type of each column in DataFrame
df. dtypes
team object
points object
rebound object
blocks object
dtype:object
DataFrame’deki sütunların hiçbirinin sayısal olmadığını görebiliriz.
Belirli sütunları sayısal değerlere dönüştürmek için .astype() işlevini kullanabiliriz:
#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)
Daha sonra arsa() fonksiyonunu yeniden kullanabiliriz:
#create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
Artık her değişken sayısal olduğundan noktalar, sıçramalar ve bloklar için başarılı bir şekilde doğrusal bir çizim oluşturabiliyoruz.
Bunu tekrar dtypes fonksiyonunu kullanarak kontrol edebiliriz:
#display data type of each column in DataFrame
df. dtypes
team object
float64 points
rebounds float64
blocks float64
dtype:object
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Pandas’ta KeyError Nasıl Düzeltilir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor
Nasıl düzeltilir? ValueError: İşlenenler şekillerle yayınlanamadı