• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

선생님, 질문이 있습니다.

21.07.31 15:55 작성 조회수 101

0

선생님, 강의 잘 듣고 있습니다..

대학원 가기 전에 다시 복습할 겸 듣고 있는데 

매번 코딩을 새로 배우거나 하면 드는 생각이 '늘 메서드를 굳이 전부 외울 필요는 없지만 익숙해질 필요는 있다' 인데요..

사실 저는 코딩테스트도 c++로만 봤어서 Pythonic한 문법은 익숙하지 않은데(특히 Python이 type dynamic해서 형에 대해 제약이 없다는 점이 오히려 낯설게 다가온다거나 List comprehension 등) 

그래서인지 이런 메서드 정렬 / 삽입 등등 메서드의 이름을 기억하고 API로 내면화하고 자유롭게 쓰는게 오히려 어렵더라구요

가령 

titanic_df[['Name','Age','Pclass']].sort_values(by=['Pclass','Age'])

이런 것에서도 sort_values(by=['Pclass','Age']) shift tap tap을 눌러보면 

by에는 list형만 올 수 있다고 적혀있고 또 그렇게 써야만 하는걸로 이해하면 되는데

저걸 이해하기 전까지는 by = [['Pclass','Age]] 도 되는거 아님?

2차원 df에 대한 정렬이니 그에 대한 기준도 2차원 df로 맞춰줘야 하는거 아닌가?라는 식으로 의문을 갖다보면 헷갈리게 됩니다. 

만약 이걸 실전에서 현업에 쓴다고 했을 때 확실히 sort_values라는 명칭과 매개변수까지 전부 숙지한 사람과 그렇지 못하고 구글링으로 pandas dataframe sort module 검색한 다음 용법을 확인하고 써먹는 사람과는 일의 능률에 차이가 분명히 있고 무시할 수도 없는 차이라 걱정이 되네요.

이런 저같은 경우에는 그냥 계속 이쪽 계열의 코딩을 많이 해보면서 익숙해지는 방법밖에 없을까요? 

 아니면 다른 좋은 고견이 있을까요?

감사합니다. 

답변 1

답변을 작성해보세요.

0

안녕하십니까, 

음, 적어주신 내용을 읽다보니, 저도 처음 파이썬을 배울때 어려웠던 점이 기억나는 군요. 

저도 함수 인자에 들어가는 변수 타입을 보통 선언하지 않다 보니, 직관적으로 함수의 성격을 이해하는게 쉽지 않았습니다. 그리고 제일  어려웠던 것은 비슷비슷한 파이썬 라이브러리가 너무 많다 보니까, 어떨때 뭘 써야 하는지 선택 장애가 왔던게 기억에 남는군요.  물론 여전히 어려운것은 간결하고 축약적으로 프로그램을 작성하는 파이썬 특유의 로직일 것입니다(예를 들어 list comprehension)

파이썬의 가장 큰 장점이 바로 간결함 일것인데요, 가끔은 이런 장점이 컴파일 언어를 주로 사용하시는 분들께는 부자연스러움으로 다가올 수 있는 것 같습니다. 해답은 역시 익숙해 지면 됩니다(너무 진부한 답변이기도 합니다만 ^^;;)

파이썬 함수 선언 시 아래와 같이 함수 인자의 타입과 반환 값의 타입을 선언해 줄수 있습니다.  자세한 내용은 인터넷 검색을 해보시면 쉽게 찾으실 수 있을 것 입니다. 

def function1(arg1: float, arg2:str) -> str 

판다스 API를 학습 하실때 조금 헷갈릴 수 있는 부분이 있는데요. 대표적으로 함수 인자에 inplace가 들어갈 경우의 처리 차이, 그리고 인자로 list가 들어 갈때 입니다. 

먼저 df.sort_values(by='column_name1')과 같이 sort_values()메소드의 by인자로는 str 또는 list가 들어갈 수 있습니다. 단일 컬럼으로 정렬시는 str로 넣어주고 여러개의 컬럼으로 정렬시는 list로 넣어 줍니다. 2차원 df의 정렬이지만 by가 인자로 받는 것은 정렬 기준이 되는 컬럼명이므로 여러개의 컬럼들로 정렬을 하려면 당연히 list가 되어야 합니다. 

list가 헷갈리게 사용될 때는 역시 dataframe의 [] 연산자와 함께 사용될 때 입니다. dataframe의 [] 연산자는 특정 컬럼을 선택할 때 사용됩니다. 하나의 컬럼만 선택하려면 df['column_name1'] 을 해주면 됩니다. 하지만 두개 이상의 컬럼을 선택하려면 list로 넣어 줘야 합니다. dataframe[['column_name1', ['column_name2']] 와 같이 해줘야 합니다. list가 들어가는 경우는 '여러개의 컬럼명이다' 라고 간주하시면 좀 더 이해하시기 쉬울 실 것 같습니다. 

파이썬이 쉽다고는 하지만,  컴파일 언어를 주로 하시던 분들이 적응하려면 조금 시간이 필요합니다. 적응 시간을 줄여주는 가장 좋은 방법은 잘 아시다시피 많이 짜보는 것입니다.  그리고 pandas도 다양한 데이터 활용을 여러번 해보시다보면 적응이 됩니다. 강의에서 pandas의 DataFrame 사용시 헷갈리는 부분들에 대해서 중점적으로 말씀 드리는 들으시면서 이런 부분들에 대해서 유의하시고 데이터 가공을 적용하시다 보면 어느새 pandas를 잘 활용하시게 될 것 입니다. 

감사합니다. 

celestial_님의 프로필

celestial_

질문자

2021.08.01

선생니이이임 주말인데도 자세한 답변해주셔서 감사합니다!!!ㅠㅠ!! 코드업100제부터 풀어보면서 적응하는게 우선일 것 같네요ㅎㅎㅎ 다시 한 번 정성스러운 답변해주셔서 감사합니다!!