-
<TIL> 2024-03-18내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL 2024. 3. 18. 23:47
- 오늘 진행한 일
- Spark 강의 수강
- 최종 팀프로젝트 대비 데이터 탐색
오늘은 강의를 수강하며 알게된 파이썬 코드에 대한 내용을 기록한다.
메소드 체이닝과 리스트 컴프리헨션에 대해서 배웠는데
메소드 체이닝은 자주 사용하던 개념이었는데 이름을 모르고 그냥 동작하니까 사용했던 코드였다.
리스트 컴프리헨션은 종종 코드를 인터넷에서 볼 때 발견하던 양식의 코드였는데
조금 이해하기 난해해서 잘 사용하지 않았던 코드였다. 이번에 제대로 배워서
여러 줄의 코드를 짧고 간결하게 작성해보는 경험을 했다.
메소드 체이닝(Method chaining)
메소드 체이닝이란 여러 메소드를 이어서 호출하는 문법임
메소드 체이닝을 이용하면 코드가 하나의 문장처럼 읽히게 할 수 있다는 장점이 있고
코드가 간결해진다는 장점이 있음
그러나 하나의 라인에서 많은 일이 일어나게되면 디버깅을 하기 어렵다는 단점이 있음
# 예시 df.groupby("app_name")['review_rating'].agg(["size", "mean"]).reset_index().sort_values("mean", ascending=False)
1. 위 코드는 app_name을 기준으로
2. size와 mean을 집계함수로하여 review_rating을 그룹화 하고
3. 인덱스를 리셋해준 뒤
4. mean을 기준으로 내림차순 정렬하는 코드를
메소드 체이닝을 이용해 한줄로 작성한 것
리스트 컴프리헨션(List comprehension)
리스트 컴프리헨션을 사용하는 이유는 직관적이며 여러 줄이 필요하던 기존의 코드를 한 줄에 작성할 수 있게
만들어주기 때문이고 속도 또한 더 빠르기 때문임
# 일반 반복문으로 리스트를 생성하는 코드 numbers = [] for n in range(1, 10+1): numbers.append(n) # 컴프리헨션으로 표기 numbers = [x for x in range(10)]
대괄호를 통해서 생성한다는 방법 자체는 동일하지만 컴프리헨션은 대괄호의 내부에 코드를 작성함
리스트 컴프리헨션은 for문에서 반복되는 변수를 콜론(:) 다음에 줄을 바꿔 들여쓰기 하는 것이 아니라
for문 앞에 작성함.
# 반복문에 조건문을 이용한 리스트 생성 even_numbers = [] for n in range(1, 10+1): if n % 2 == 0: even_numbers.append(n) # 컴프리헨션 문법에 if 키워드를 이용한 조건 리스트 생성 even_numbers = [x for x in range(1, 10+1) if x % 2 == 0]
컴프리헨션은 if 키워드를 지원하여 for문 뒤에 위치시켜 조건을 지정해줄 수 있음
[ (x, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피']] # 결과 [('쌈밥', '사과'), ('쌈밥', '아이스크림'), ('쌈밥', '커피'), ('치킨', '사과'), ('치킨', '아이스크림'), ('치킨', '커피'), ('피자', '사과'), ('피자', '아이스크림'), ('피자', '커피')]
[ x for x in range(10) if x < 5 if x % 2 == 0 ] # 결과 [0, 2, 4]
그리고 for와 if를 중복하여 작성할 수 있어서 여러 개의 for문을 통한 다중 for문, 여러 개의 if 키워드를 통한 다중 조건문을
이용한 코드를 작성할 수 있음
'내일배움캠프(데이터 분석 부트캠프 1기) > TIL & WIL' 카테고리의 다른 글
<TIL> 2024-03-21 (0) 2024.03.21 <TIL> 2024-03-20 (0) 2024.03.20 <WIL> 2024년 3월 둘째 주 회고 (1) 2024.03.15 <TIL> 2024-03-15 (1) 2024.03.15 <TIL> 2024-03-14 (0) 2024.03.14 - 오늘 진행한 일