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

파이썬 pandas로 DataFrame에서 최소 나이 직원의 ID와 급여 찾기

문제 개요

주어진 DataFrame(데이터프레임)에서 가장 어린 나이를 가진 직원의 ID와 급여를 찾는 프로그램을 파이썬으로 작성해 보겠습니다. 이 문제는 pandas의 불리언 인덱싱(Boolean Indexing)과 min() 함수를 활용하면 간단하게 해결할 수 있습니다.

입력

다음과 같은 DataFrame이 있다고 가정합니다.

DataFrame is
  Id   Age   Salary
0 1    27    40000
1 2    22    25000
2 3    25    40000
3 4    23    35000
4 5    24    30000
5 6    32    30000
6 7    30    50000
7 8    28    20000
8 9    29    32000
9 10   27    23000

출력

최소 나이(22세)에 해당하는 직원의 ID와 급여 결과는 다음과 같습니다.

  Id Salary
1 2  25000

해결 방법

이 문제는 아래 단계를 따라 해결할 수 있습니다.

  • 직원 정보가 담긴 DataFrame을 정의합니다.

  • Age 열의 값이 전체 최소 나이(df['Age'].min())와 일치하는 행만 조건으로 필터링하여 result DataFrame에 저장합니다.

result = df[df['Age']==df['Age'].min()]
  • result DataFrame에서 필요한 Id와 Salary 열만 추출하여 출력합니다.

result[['Id','Salary']]

여기서 df['Age'] == df['Age'].min()은 Age 열의 각 값이 최소 나이와 같은지 비교한 불리언 시리즈를 반환하고, 이를 DataFrame에 대괄호로 넘기면 조건이 참인 행만 남게 됩니다. 만약 최소 나이를 가진 직원이 여러 명이라면 해당하는 모든 행이 함께 반환된다는 점도 기억해 두면 좋습니다.

예제 코드

아래 전체 구현 예제를 통해 실행 과정을 확인해 보겠습니다.

import pandas as pd
data = [[1,27,40000],[2,22,25000],[3,25,40000],[4,23,35000],[5,24,30000],
[6,32,30000],[7,30,50000],[8,28,20000],[9,29,32000],[10,27,23000]]
df = pd.DataFrame(data,columns=('Id','Age','Salary'))
print("DataFrame is\n",df)
print("find the minimum age of an employee id and salary\n")
result = df[df['Age']==df['Age'].min()]
print(result[['Id','Salary']])

실행 결과

DataFrame is
  Id   Age   Salary
0 1    27    40000
1 2    22    25000
2 3    25    40000
3 4    23    35000
4 5    24    30000
5 6    32    30000
6 7    30    50000
7 8    28    20000
8 9    29    32000
9 10   27    23000
find the minimum age of an employee id and salary
  Id Salary
1 2  25000

실행 결과를 보면 나이가 22세로 가장 어린 2번 직원의 ID와 급여(25000)가 정상적으로 출력되는 것을 확인할 수 있습니다. 이와 같은 방식은 최대값을 찾을 때도 응용할 수 있으며, max(), idxmin(), nsmallest() 등의 함수와 함께 활용하면 다양한 데이터 분석 작업에 유용하게 사용됩니다.