16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

前処理関係の備忘録(to_numeric)

Posted at

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

16
20
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?