ANOVA 다변량 분산분석을 위해 titanic 데이터를 feature 변수에 따라 나누던 중, 다른 방식으로 똑같이 데이터를 뽑아낼 수 있다는 걸 발견해서 loc에 대한 이해 겸 정리 남긴다.
# 1번 방법
feature, target = 'Embarked', 'Fare'
# ANOVA를 위해 데이터 분리
S = titanic.loc[titanic[feature] == 'S', target]
C = titanic.loc[titanic[feature] == 'C', target]
Q = titanic.loc[titanic[feature] == 'Q', target]
# 2번 방법
S = titanic.loc[titanic[feature] == 'S'][target]
C = titanic.loc[titanic[feature] == 'C'][target]
Q = titanic.loc[titanic[feature] == 'Q'][target]
두 코드의 차이가 보이시나요?
두 방법 모두 같은 형식의 데이터를 조회한다. 리턴되는 값도 동일하고, 리턴되는 타입도 판다스 Series 객체로 동일했다.
그럼 두 코드는 어떻게 다른 걸까?
데이터를 생성하는 방법이 구현 상 약간 다르다.
1번 방법은 Dataframe에서 조건에 만족하는 값을 필터링하여, 그 중 target에 해당하는 값을 가져와서(이 부분도 loc의 열 조회 조건으로 들어가는 셈), series 객체로 만들어서 반환하는 것이다.
2번 방법은 Dataframe에서 조건에 만족하는 행을 모아 Dataframe을 새로 생성한 뒤에, 거기에서 target에 해당하는 Series 를 가져온다는 방식에서 pandas Dataframe을 조작하는 순서, 방식에 있어서 약-간의 차이가 있었음을 알 수 있었다.
둘 중 어느 방법을 사용해도 무방하고, 큰 차이는 없어 보인다.
혹시 성능 상 차이나 제가 놓치고 똑같다고 퉁쳐버린 부분이 있다면 댓글로 알려주세요~ 바로 시정하겠습니다요
'코딩∙데이터분석🧑🏻💻' 카테고리의 다른 글
CRISP-DM 분석방법론 (0) | 2023.09.14 |
---|---|
[웹크롤링] python selenium beautifulsoup 파싱한 html에 코드가 없을 때 / 데이터가 안나올 때 / 페이지 로딩 대기 / 페이지 대기 / 페이지 조작 (2) | 2022.11.28 |
[웹크롤링] 'WebDriver' object has no attribute 'find_element_by_link_text' 에러 / a href 태그 클릭하기 (0) | 2022.11.24 |
[코딩책추천] '두잇! 지옥에서 온 문서관리자 깃&깃허브 입문' 책 추천🤓 (0) | 2022.10.28 |
대구 온라인 모각코 with GDG Daegu (0) | 2021.02.17 |
댓글