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: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です