강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

이시온님의 프로필 이미지
이시온

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

분류(Classification) 성능 평가지표 개요와 정확도(Accuracy) 소개

def 에서의 함수 선언 질문 드립니다.

작성

·

289

0

안녕하세요 오전에 답변 달아주신 내용 확인하고 추가적인 공부를 하고 왔습니다.

 

2.6 사이킷런으로 수행하는 타이타닉 생존자 예측.ipynb 파일에서 def fillna(df) 등을 선언 하실 때

df에 대한 정의 (df = titanic_df ) or (df = pd.read_csv('titanic_train.csv') 없이 강의가 진행 되더라구요.

어떻게 df가 자동으로 titanic_df 값을 받을 수 있는지 이해가 되지 않아서 직접 코드를 실행 해보았습니다.

 

A. pd.read_csv 미작용, df 미정의 >> 오류발생

 

B. pd.read_csv() 작성, df 미정의 >> 오류발생

 

C.  read_csv() 작성, df 정의 >> 함수가 제대로 정의 되었는지 확인 가능

 

1. 위 내용처럼 제가 혼자 코드를 작성 해보았을 땐 정의를 해주어야만 def 구문이 제대로 작성되었는지 확인 할 수 있었습니다..

자동적으로 df가 titanic_df로 인식되게 할 수 있게 하는 다른 방법이 있는걸가요?

2. AttributeError: 'numpy.int64' object has no attribute 'fillna' 관련 질문입니다. 아래의 두 캡처본에서 오류가 발생하는것과 발생하지 않는것의 차이가 무엇인가요?

 

A. def로 정의한 함수를 그대로 출력하여 null값 확인

B. def로 정의한 함수를 A로 받아서 null값 확인

마지막 질문입니다.

3.이번 질문의 경우는 너무 혼란스럽습니다.

df를 정의 하지 않았고, dt=titanic_df로 정의 하였으며

 

def fna(KK) 에 대해서 선언을 하였고,

dt에 대한 series값에 대해 fillna() 함수를 적용 하고

return df를 입력 하였습니다

 

또한 null값 확인을 위해 fna(dt).isnull() 값을 출력하였는데 함수가 적용된 결과값이 출력 되었습니다.

이 문제는 df, dt, KK 등에 어떠한 문자를 입력해도 같은 결과값이 출력이 되더군요.. 파이썬 자체의 오류인걸까요?

 

 

 

 

 

-아래는 3번 질문에 대해서 작성 했던 코드입니다-


import pandas as pd titanic_df = pd.read_csv('titanic_train.csv') dt = titanic_df
def fna(KK) : dt['Age'].fillna(df['Age'].mean(), inplace = True) dt['Cabin'].fillna('N', inplace = True) dt['Embarked'].fillna('N', inplace = True) return df

fna(dt).isnull()

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

이러한 인자들을 무작위로 넣어보면서 출력을 했던 이유는

ex)

df = titanic_df

def fillna(df) :

df['Age'].fillna(df['Age'].mean(), inplace = True)

위와 같은 def 구문처럼

<def 사용자 마음대로 지정 가능한 함수(매개변수1) :

매개변수2["컬럼값"].파이썬에 내장된 함수() >

형태에서 매개변수1과 매개변수2는 동일한 문자를 사용해야 하는지 확인해보고 싶었기 때문입니다.

매개변수 1에 df를 썼다면 매개변수 2에도 df를 반드시 써주어야 하는건가요?

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

오, 아주 잘하셨습니다. 

그리고

1.  df에 대한 정의 (df = titanic_df ) or (df = pd.read_csv('titanic_train.csv') 없이 강의가 진행 되더라구요.

=> 이건 기본 프로그램 지식이라 오히려 군더더기라 생각되서 설명하지 않았습니다. 

2. 자동적으로 df가 titanic_df로 인식되게 할 수 있게 하는 다른 방법이 있는걸가요?

=> 음. 그런건 없습니다. 

 

제가 이런 말씀 드리기에는 조심스럽지만, 아직 이 강의를 들으시기에는 프로그램밍 기초 지식이 부족하십니다. 이게 잘못되었다고 드리는 말씀이 절대 아닙니다. 

일부 수강생 분들도 파이썬 문법적인 기초 질문 올리시는 경우도 많습니다. 또 제가 다 답변해드리고 있고요. 

다만 이시언님의 경우 너무 많은 기초 문법 질문을 올려 주셔서, 제가 이제는 감당하기가 어려운 수준입니다. 다른 수강생 분들의 Q&A도 신경을 써야 하기 때문입니다.

그래서 제 강의를 지금 들으시는 것 보다는 좀 더 파이썬 프로그램을 익히시고 다시 강의를 들으시는게 어떨까 싶습니다. 머신러닝에 대한 열정은 잘 이해하고 있습니다. 너무 급하게 생각하지 마시고, 기초를 조금만 더 닦고 오시면 좋을 것 같습니다. 

필요하시면 강의 환불 받으실 수 있도록 인프런에 애기해놓았습니다. 말씀해 주시면 환불 절차 진행하겠습니다. 

다시 말씀드리지만, 프로그램을 잘모르시는데도 머신러닝에 도전하시는 모습, 응원하고. 저도 도와 드리고 싶습니다. 다만 지금 수준에서 도전하시면 오히려 머신러닝이 어려운걸로 느껴지고 결국엔 중도에 포기하실 것 같습니다.

너무 서운해 하지 마셨으면 합니다. 모든 일에는 단계가 있고, 순서가 있으니, 조금만 파이썬 기초에 투자하시면 본 강의도 조만간 수강하실 수 있을 것 같습니다.  

 

감사합니다. 

 

이시온님의 프로필 이미지
이시온

작성한 질문수

질문하기