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