본문 바로가기
코딩∙데이터분석🧑🏻‍💻

[pandas] df.loc 함수로 열 조회하는 법 차이

by 빕비빅 2023. 8. 31.

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을 조작하는 순서, 방식에 있어서 약-간의 차이가 있었음을 알 수 있었다.

둘 중 어느 방법을 사용해도 무방하고, 큰 차이는 없어 보인다.

 

 

 

혹시 성능 상 차이나 제가 놓치고 똑같다고 퉁쳐버린 부분이 있다면 댓글로 알려주세요~ 바로 시정하겠습니다요 

댓글