Cara memperbaiki di pandas: typeerror: tidak ada data numerik untuk diplot


Kesalahan yang mungkin Anda temui saat menggunakan pandas adalah:

 TypeError : no numeric data to plot

Kesalahan ini terjadi ketika Anda mencoba memplot nilai dari pandas DataFrame, tetapi tidak ada nilai numerik untuk diplot.

Kesalahan ini biasanya terjadi ketika Anda mengira kolom tertentu di DataFrame adalah numerik, namun ternyata tipe datanya berbeda.

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita memiliki panda DataFrame berikut:

 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

Sekarang misalkan kita mencoba membuat plot linier untuk tiga variabel yang kita anggap numerik: titik, pantulan, dan balok:

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

ValueError : no numeric data to plot

Kami mendapatkan pesan kesalahan karena tidak satu pun kolom ini yang benar-benar numerik.

Bagaimana cara memperbaiki kesalahan tersebut

Kita dapat menggunakan fungsi dtypes untuk melihat tipe data apa yang dimiliki setiap kolom di DataFrame kita:

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

team object
points object
rebound object
blocks object
dtype:object

Kita dapat melihat bahwa tidak ada kolom di DataFrame yang bersifat numerik.

Kita dapat menggunakan fungsi .astype() untuk mengonversi kolom tertentu menjadi nilai numerik:

 #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)

Kita kemudian dapat menggunakan kembali fungsi plot() :

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

Kita berhasil membuat plot linier untuk titik, pantulan, dan blok karena setiap variabel kini berbentuk numerik.

Kita dapat memeriksanya dengan menggunakan fungsi dtypes lagi:

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

team object
float64 points
rebounds float64
blocks float64
dtype:object

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *