[Error Note] SyntaxError: invalid syntax. Perhaps you forgot a comma?

leeheejee·2024년 12월 10일
0

Error_note

목록 보기
1/4

Dear Error.

Pandas 에서 statsmodels.formula.api 를 불러와서 다중회귀분석을 하려던 그 때 마주한 에러

import statsmodels.formula.api as smf

# statsmodels.formula.api.ols(formula, data, subset=None, drop_cols=None, *args, **kwargs)

model = smf.ols(formula='체중(5kg단위) ~ 수축기혈압 + 식전혈당(공복혈당)', data=filter_df_drop)

'식전혈당(공복혈당)' 변수와 '수축기혈압' 변수가 몸무게에 영향을 미칠 것인지 가설을 검증하기위해서
위와 같은 코드를 실행하고 아래와 같은 에러 코드를 만났다.

SyntaxError: invalid syntax. Perhaps you forgot a comma?

처리 과정

  1. 에러로 확인되니 에러 문구처럼 comma나 오타가 있는지 확인

  2. statsmodels의 공식 문서에 들어가서 formula.api.ols 사용법을 확인
    https://www.statsmodels.org/dev/generated/statsmodels.formula.api.ols.html#statsmodels.formula.api.ols

statsmodels.formula.api.ols(formula, data, subset=None, drop_cols=None, *args, **kwargs)

formula에 str을 넣는 방법 이외에도 object를 넣는 방법을 구글링 통해서 찾고 실행
(공식 문서) formula str or generic Formula object

target = filter_df_drop[['수축기혈압','식전혈당(공복혈당)']]
x_data = filter_df_drop[['체중(5kg단위)']]
model = smf.ols(target, x_data)

PatsyError: model is missing required outcome variables

  1. 변수의 문제로 확인하고, 한글 변수명을 위해서 한글 폰트 설정하였으나 에러 해결 안됨
import os

os.name
if os.name == 'posix' :
    plt.rc('font', family='AppleGothic')
else :
    plt.rc('font', family='Malgun Gothic')

# 마이너스 폰트 깨지는 문제 대처
plt.rc('axes', unicode_minus=False)

5. 변수명 변경 후 에러 해결
변수명의 괄호'(',')' 를 변경 후 에러 해결

  • 전체 변수명 리스트 형식을 통해서 영문 변경
model = smf.ols(formula='weight ~ bp_high + bs',data =filter_df_drop)
  • rename을 통해서 괄호가 포함된 특정 변수명만 변경
model = smf.ols(formula='체중 ~ 수축기혈압 + 식전혈당',data =filter_df_drop)
profile
🫥 😊

0개의 댓글