1. 文字列を含んだ行(object)を強制的に数値(float64)のみの行に変換する。
csvから数字を読み込んだはずなのに、型がfloat64でなくobjectとなってしまう場合、
数字以外に文字列が含まれてしまっている。
膨大なファイルだと探すのが面倒だが、pandasにはto_numericという関数がある。
これを使うと文字列をNaNに変えてくれることを、今更知った。
使い方
df['column0']=pd.to_numeric(df['column0'],error='coerce')
例:
# sample dataとしてirisを用意。
from sklearn.datasets import load_iris
import pandas as pd
df=pd.DataFrame(data.data)
#data=load_iris()
#df.iloc[1,0]='asdfasfasdf'
#df.info()
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 150 entries, 0 to 149
#Data columns (total 4 columns):
#0 150 non-null object <--- object!!!
#1 150 non-null float64
#2 150 non-null float64
#3 150 non-null float64
#dtypes: float64(3), object(1)
#memory usage: 4.8+ KB
# 文字をNaNに変換し、行をfloat64型に変換する。
df[0]=pd.to_numeric(df[0],errors='coerce')
df.info()
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 150 entries, 0 to 149
#Data columns (total 4 columns):
#0 149 non-null float64 <--- object が float64 になった。
#1 150 non-null float64
#2 150 non-null float64
#3 150 non-null float64
#dtypes: float64(4)
#memory usage: 4.8 KB
# Nanの処理
df.dropna(inplace=True) # NaNの扱いは.fillna()や.dropna()
参考: dataCamp