Pandas에서 열(column)의 합계를 기준으로 데이터를 필터링하려면 loc() 메서드를 활용하면 됩니다. 이번 예제에서는 각 학생의 점수를 모두 더한 뒤, 총점이 400점 이상 즉, 평균 80%를 넘는 학생의 열만 추출해 보겠습니다.
먼저 학생 성적 기록이 담긴 DataFrame을 생성합니다. 3명의 학생 점수 데이터, 즉 3개의 열로 구성되어 있습니다.
dataFrame = pd.DataFrame({
'Jacob_Marks': [95, 90, 75, 85, 88],
'Ted_Marks': [60, 50, 65, 85, 70],
'Jamie_Marks': [77, 76, 65, 45, 50]
})이제 열을 기준으로 필터링합니다. 총점이 400점을 초과하는 학생의 열만 가져오는 핵심 코드는 다음과 같습니다.
dataFrame = dataFrame.loc[:, dataFrame.sum(axis=0) > 400]
여기서 sum(axis=0)은 각 열별로 행 방향의 값을 모두 합산하며, 비교 연산 결과 총점이 400보다 큰 열만 True로 평가되어 loc()이 해당 열들만 선택하게 됩니다.
전체 예제 코드
다음은 처음부터 끝까지 실행할 수 있는 완성된 코드입니다.
import pandas as pd
# 3개의 열을 가진 데이터프레임 생성
dataFrame = pd.DataFrame({
'Jacob_Marks': [95, 90, 75, 85, 88],
'Ted_Marks': [60, 50, 65, 85, 70],
'Jamie_Marks': [77, 76, 65, 45, 50]
})
print("Dataframe...\n", dataFrame)
# 열 기준으로 필터링
# 총점이 400 초과인 학생의 열만 가져오기
dataFrame = dataFrame.loc[:, dataFrame.sum(axis=0) > 400]
# 업데이트된 데이터프레임 출력
print("Updated Dataframe...\n", dataFrame)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Dataframe... Jacob_Marks Ted_Marks Jamie_Marks 0 95 60 77 1 90 50 76 2 75 65 65 3 85 85 45 4 88 70 50 Updated Dataframe... Jacob_Marks 0 95 1 90 2 75 3 85 4 88
결과 해석
각 학생의 총점을 계산해 보면 다음과 같습니다.
- Jacob: 95 + 90 + 75 + 85 + 88 = 433점 → 400 초과 (조건 충족)
- Ted: 60 + 50 + 65 + 85 + 70 = 330점 → 조건 미충족
- Jamie: 77 + 76 + 65 + 45 + 50 = 313점 → 조건 미충족
따라서 필터링 후에는 조건을 만족하는 Jacob_Marks 열만 최종 DataFrame에 남게 됩니다. 이처럼 loc()과 sum()을 조합하면 복잡한 반복문 없이도 열 단위 조건 필터링을 한 줄로 처리할 수 있습니다.