엑셀에서 가장 많이 사용하는 기능 중에 하나는 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': 양쪽 데이터프레임의 공통된 키를 기준으로 병합

'WORK IN U.S.A > 파이썬(Python)' 카테고리의 다른 글
데이터프레임 dataframe 의 열 Column 이름 변경하기 (1) | 2024.08.02 |
---|---|
Reverse complement (역상보서열) 파이썬으로 짜기 (1) | 2024.06.03 |