본문 바로가기
프로그래밍/Python

[오류 해결] Pandas data cast to numpy dtype of object. Check input data with np.asarray(data)

by 부자 꽁냥이 2021. 11. 5.

 

꽁냥이가 회귀 분석을 하다가 아래와 같은 오류를 발생했어요. 


Pandas data cast to numpy dtype of object. Check input data with np.asarray(data)


 

해당 오류는 숫자값이 들어가야 할 자리에 다른 타입의 데이터, 예를 들면 문자열 데이터가 들어와서 발생하는 오류인데요. 아래 예제 코드를 통해서 확인해보겠습니다.

 

import pandas as pd
import statsmodels.api as sm

df = pd.DataFrame()
df['y'] = [1,1,2,3,2,4,5,2,3]
df['x1'] = ['3','2','2','4','6','5','7','3','1']
df['x2'] = [3.3,1.2,7.7,3.3,2.1,5.7,7.1,0.3,1.5]

y = df['y']
X = df[['x1','x2']]
X = sm.add_constant(X)

model = sm.OLS(y, X).fit()
model.summary()

 

위 코드를 보시면 x1 열 데이터가 숫자가 아닌 문자로 이루어진 것을 알 수 있어요. 이 상태로 코드를 돌리면 아래와 같은 오류가 발생해요.

 

 

오류를 해결하는 방법은 간단합니다. 아래와 같이 x1열의 데이터 타입을 정수형 int(또는 실수형 float)으로 바꿔주면 됩니다. 그러고 나서 실행하면 정상적으로 작동됨을 확인할 수 있어요.

 

df = pd.DataFrame()
df['y'] = [1,1,2,3,2,4,5,2,3]
df['x1'] = ['3','2','2','4','6','5','7','3','1']
df['x2'] = [3.3,1.2,7.7,3.3,2.1,5.7,7.1,0.3,1.5]

y = df['y']

df['x1'] = df['x1'].astype(int) ###### 데이터 변환

X = df[['x1','x2']]
X = sm.add_constant(X)

model = sm.OLS(y, X).fit()
model.summary()

 


 


댓글


맨 위로