ValueError: Cannot convert non-finite values (NA or inf) to integer
というエラーが出ていて解決方法についてご教示いただけると幸いです。
エラーに関して調べたところ、欠陥値があるため変換のエラーを起こしている?とのことだったのですがどこの欠陥値が作用しているのかがわかりません。
念のため意味があるかわかりませんが詳細です;
killed_byは何によって死んだかを表しており、基本的には銃がほとんどです。今回はその銃の識別を数字に置き換え分類しようと考えています。
###実行したいコードの部分
show_df['gan_type'] = show_df['killed_by'].map({'Deagle':1,'P1911':2,'R45':3,'R1895':4,'P18C':5,'P92':6,\ 'Skorpion':7,'S12K':8,'S1897':9,'S686':10,'DBS':11,'Tommy Gun':12,\ 'Vector':13,'Micro UZI':14,'MP5K':15,'PP-19 Bizon':16,'UMP45':17,\ 'AUG':18,'G36C':19,'M16A4':20,'M416':21,'M762':22,'Mk47 Mutant':23,\ 'QBZ':24,'SCAR-L':25,'AKM':26,'GROZA':27,'M249':28,'DP-28':29,\ 'AWM':30,'Win94':31,'Kar98K':32,'M24':33,'mini14':34,'QBU':35,'Mk14':36,'SKS':37,\ 'SLR':38,'VSS':39,'Bluezone':40,'Down and Out':41,'Falling':42}).astype(int)
###コードの全体像
import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns df = pd.read_csv("csvまでのパス") show_df = df.drop(['victim_position_x','victim_position_y','victim_placement','killer_placement','killer_name'],axis=1) #欠陥値の補足 show_df['kill_position_x'] = show_df['killer_position_x'].fillna(show_df['killer_position_x'].mean()) show_df['kill_position_y'] = show_df['killer_position_y'].fillna(show_df['killer_position_y'].mean()) print(show_df[show_df.isnull().any(1)].head(10)) #日本語表記は検討 ソードオブショットガン,クロスボウ、グレネード、火炎瓶、フライパン、鎌、バール、マチェット show_df['gan_type'] = show_df['killed_by'].map({'Deagle':1,'P1911':2,'R45':3,'R1895':4,'P18C':5,'P92':6,\ 'Skorpion':7,'S12K':8,'S1897':9,'S686':10,'DBS':11,'Tommy Gun':12,\ 'Vector':13,'Micro UZI':14,'MP5K':15,'PP-19 Bizon':16,'UMP45':17,\ 'AUG':18,'G36C':19,'M16A4':20,'M416':21,'M762':22,'Mk47 Mutant':23,\ 'QBZ':24,'SCAR-L':25,'AKM':26,'GROZA':27,'M249':28,'DP-28':29,\ 'AWM':30,'Win94':31,'Kar98K':32,'M24':33,'mini14':34,'QBU':35,'Mk14':36,'SKS':37,\ 'SLR':38,'VSS':39,'Bluezone':40,'Down and Out':41,'Falling':42}).astype(int) two = print(new_df.head(10)) #sns.pairplot(two[0:101],hue='killed_by') #plt.one() #one = df[df['killed_by'=='M416']]
###エラー
Traceback (most recent call last): File "kill.py", line 20, in <module> 'SLR':38,'VSS':39,'Bluezone':40,'Down and Out':41,'Falling':42}).astype(int) 一部省略〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 raise ValueError("Cannot convert non-finite values (NA or inf) to integer") ValueError: Cannot convert non-finite values (NA or inf) to integer
この処理を行いたいのですが、エラーで止まってしまっています。
自分なりに考えこのように実行してみました、
0. killed_byの列に欠陥値があるかと考えisnallで検索しようとしましたが、こちらもエラーが出ました。列を指定してnullを検索できない?ため.headで10行ほど確認しましたが特に問題はなさそうでした。
0. 他の列にnullがあるため実行できない?と考え、他の列の欠陥値を補うようにするため以下のコードを記述しました。
show_df['kill_position_x'] = show_df['killer_position_x'].fillna(show_df['killer_position_x'].mean()) show_df['kill_position_y'] = show_df['killer_position_y'].fillna(show_df['killer_position_y'].mean()) print(show_df[show_df.isnull().any(1)].head(10))
ですが、エラーはそのままで変化はありませんでした。このコードがそもそも正しく欠陥値を変換できているのかということも疑問です。また、この処理が上手くいったとしてタイトルのエラーが改善されるかという点についても疑問です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 04:24