Pandas での修正方法: typeerror: プロットする数値データがありません
pandas の使用時に発生する可能性のあるエラーは次のとおりです。
TypeError : no numeric data to plot
このエラーは、pandas 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
ここで、数値であると考えられる 3 つの変数 (ポイント、バウンス、ブロック) の線形プロットを作成しようとするとします。
#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 を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした