実現したいこと
データ同士で計算しグラフを表示させる。
・エラーメッセージ
ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
該当のソースコード
python
質問に記載のエラーメッセージよりも上に「Traceback」と書かれてたら、そこから下をできるだけ省略せずに質問に記載してください
(ここに書くのではなく、質問を編集して追記する)
ユーザー名等の個人情報は伏せ字でいいですが、それ以外はできるだけそのまま記載してください
すいません、気を付けます
import numpy as np
いったん、データフレームに読み込んで、NaN や Infinity が含まれている行を削除すればよいかもしれません。
df = pd.read_csv('NPBdata.csv', skiprows=5, header=None, usecols=[0,1,2])
df = df[np.isfinite(df).all(axis=1)]
x, y, z = df.T.values
四則演算するにはどうすればいいですか?
x, y, z には nan や infinity が取り除かれたデータが入っていますので、
c = x * z
以降は変更しなくてもそのままで問題ないかと思います。
x,y,z以外にももっとデータを増やして計算する方法がありますか?
その場合は usecols に列番号を追加します。(1,2,3,9,10列目を読み込み)
df = pd.read_csv('NPBdata.csv', skiprows=5, header=None, usecols=[0,1,2,8,10])
試しに1つデータを増やしたところエラーが起きてしまいました。
df = df[np.isfinite(df).all(axis=1)]
エラーメッセージ
ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
数値に変換できない文字列が含まれている列があるのだと思います。もしかして、カンマの3桁区切りになっている数値がありませんか?
データ調べたところカンマで3桁区切りになっていました。
カンマの区切りは変えずにエラーをなくすことは可能でしょうか。
read_csv と nan, infinite を落とす処理の間に replace の処理を追加してみて下さい。
df = pd.read_csv('NPBdata.csv', skiprows=5, header=None, usecols=[0,1,2])
df = df.replace(',', '', regex=True).astype(float) # これ
df = df[np.isfinite(df).all(axis=1)]
回答1件