Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – 열 합계를 기준으로 DataFrame의 열 필터링하기

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()을 조합하면 복잡한 반복문 없이도 열 단위 조건 필터링을 한 줄로 처리할 수 있습니다.