꽁냥이가 회귀 분석을 하다가 아래와 같은 오류를 발생했어요.
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()
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 함수에 어떤 인자(Argument)가 있는지 알아보기 (386) | 2022.04.03 |
---|---|
[Python] 함수 내부 코드 가져오기 (370) | 2022.04.03 |
[Python] 인코딩 확인하기 - chardet (813) | 2021.08.04 |
[오류 해결] error tokenizing data. c error : expected (837) | 2021.06.25 |
[오류 해결] Pandas - query 실행 오류 "TypeError: 'Series' objects are mutable, thus they cannot be hashed" (1295) | 2021.06.13 |
댓글