본문 바로가기
WORK IN U.S.A/파이썬(Python)

엑셀에서 사용하는 vlookup 기능 파이썬에서 활용하기

by 김씨아내신씨 2024. 6. 18.

엑셀에서 가장 많이 사용하는 기능 중에 하나는 vlookup 이라고 생각한다. 

내가 참고할 데이터 베이스가 있는데, 그 중에서 어떠한 리스트만 뽑아내는 것이다. 

예를들어 사람에 대한 정보가 있고, 그 사람의 일련번호가 있을때 일련번호들의 리스트로 그 정보를 뽑아내는 것이다. 

이러한 것이 엑셀파일에 있을 때 가장 많이 사용하는 기능이 vlookup 기능이고, 물론 파이썬에서도 이러한 기능이 가능하다.

파이썬에서 표를 활용할 때 가장 많이 사용하는 기능은 pandas 이다. 

인스톨 방법은 https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html 참고하면되고, 

대부분 pip install pandas 로 해결가능하다. 

import pandas as pd

# 학생 성적 데이터프레임
data_scores = {
    '학생ID': [1, 2, 3, 4],
    '이름': ['A', 'B', 'C', 'D'],
    '수학': [90, 80, 70, 60],
    '영어': [85, 95, 75, 65]
}
df_scores = pd.DataFrame(data_scores)

먼저 pandas 패키지를 import 를  pd라는 이름으로 한다. 

위 코드에서 data_scores는 딕셔너리이다.. 딕셔너리는 키와 값의 쌍으로 이루어져 있으며, 여기서는 각 키가 열 이름을 나타내고, 각 값이 열에 해당하는 데이터 리스트를 나타낸다.

이러한 딕셔너리를 data frame으로 만들어준다. 

잘 만들어졌는지 확인하기 위하여 df_scores를 쳐주면 

이런식으로 표가 만들어져 있는 것을 확인할 수 있다. 

# 학과 정보 데이터프레임
data_departments = {
    '학생ID': [1, 2, 3, 4],
    '학과': ['컴퓨터공학과', '전자공학과', '기계공학과', '전자공학과']
}
df_departments = pd.DataFrame(data_departments)

다음으로, 학생 ID 에 따른 학과 정보 표를 다음과 같이 만들 수 있고, 이를 또 확인하기 위하여 

df_deparments 를 쳐보면 

와 같이 표가 생성됨을 확인할 수 있다. 

pandas의 merge 함수를 사용하여 두 데이터프레임을 특정 키(여기서는 '학생ID')를 기준으로 병합할 수 있다.

# VLOOKUP 기능을 위해 두 데이터프레임 병합
df_merged = pd.merge(df_scores, df_departments, on='학생ID', how='left')

df_merged

이 때 꼭 열의 이름이 두 표에서 같아야지 merge가 될 수 있다. 

혹여나 두 표에서 열의 이름이 같지 않을 때는 열의 이름을 바꾸기 위해서는 아래 코드를 쓰면 바꾸기 편하다, 이름 바꾸는 거는 다음 편에서 여러가지 버전을 설명해 봐야겠다. 

df_scores.rename(columns={'이름': 'FullName'} , inplace=True)
df_scores

how 인자를 변경하여 다양한 방식으로 병합할 수 있다.

  • how='left': 왼쪽 데이터프레임(df_scores)의 모든 행을 기준으로 병합
  • how='right': 오른쪽 데이터프레임(df_departments)의 모든 행을 기준으로 병합
  • how='outer': 양쪽 데이터프레임의 모든 행을 기준으로 병합
  • how='inner': 양쪽 데이터프레임의 공통된 키를 기준으로 병합

https://datacomy.com/data_analysis/pandas/merge/ 출처

 

728x90