본문 바로가기

카테고리 없음

파이썬을 엑셀처럼 사용하기 (6): 데이터 합치기 pandas merge()

파이썬을 엑셀처럼 사용하기 시리즈

 (1) 엑셀이 있는데 왜 파이썬을 배워야 하지?

 (2) 데이터 열기 pandas read_excel()

 (3) 데이터 정렬하기 pandas sort_values()

 (4) 데이터 필터링하기, 비교 연산자 pandas filtering

 (5) 사칙연산하기 pandas arithmetic

 (6) 데이터 합치기 pandas merge()

 (7) 피벗 테이블 만들기 pandas pivot_table()

 실습하기 위해서는 파이썬 아나콘다와 주피터 노트북이 설치되어있어야 합니다. 

  - [파이썬] 파이썬 아나콘다 설치 방법, 파이썬 설치 방법

  - [파이썬] 주피터 노트북(jupyter notebook) 사용법

✔ 실습 데이터는 제 깃헙에서 받을 수 있습니다. 데이터1, 데이터2


데이터 정리 작업을 하다 보면 두 개의 서로 다른 시트 또는 테이블을 하나로 합쳐야 할 때가 있습니다. 이때 엑셀의 경우 vlookup을 사용하여 손쉽게 두 시트를 병합할 수 있습니다. 판다스에서는 데이터 병합 전용 메서드인 merge가 있습니다. 

 

아래와 같은 두 개의 시트를 하나로 합치는 작업을 각각 엑셀과 파이썬에서 한다면 어떻게 할 수 있을까요?

- 왼쪽의 판매 데이터에 오른쪽의 제품군 담당 매니저의 이름을 넣어주려 합니다.

 

 

엑셀에서는 다음과 같이 할 수 있습니다.

1) N1 셀에 새로운 컬럼 이름 "매니저"를 입력합니다.

2) N2 셀에 vlookup 함수를 이용해서 값을 입력합니다.

    - E2 셀의 값을 찾습니다.

    - 찾을 표의 범위는 PrdManager.xlsx 파일의 $A$1:$B$7입니다.

    - 표의 2번째 열에서 값을 추출합니다.

3) N 열의 끝까지 각 셀에 함수를 적용시킵니다.

 

eg. 제품군이 헬스/뷰티라면 담당 매니저의 이름은 김참치가 추출됩니다.

 

 

판다스에서 같은 작업을 하려면 우선 두 번째 xlsx 파일을 불러와야 합니다.

import pandas as pd
sales = pd.read_excel('SupermarketSales.xlsx')
# 새로운 엑셀 파일을 불러옵니다.
# PrdManager.xlsx 파일을 읽어와 그 결과를 prd_manager라는 이름의 변수에 저장합니다.
prd_manager = pd.read_excel('PrdManager.xlsx')
# 결과를 출력합니다.
prd_manager

 

 

데이터를 하나로 합치기

판다스에서 여러 개의 데이터 집합을 연결해서 하나로 만드는 가장 대표적인 방법은 merge() 메서드를 이용하는 것입니다. merge 함수에는 다음의 인수들이 들어갑니다.

 

- 첫 번째 데이터프레임

- 두 번째 데이터프레임

- how = 'left' (왼쪽 데이터프레임을 기준으로 합친다는 의미입니다.)

- on = 두 데이터프레임을 합치는 기준이 되는 컬럼의 이름

 

sales = pd.merge(sales, prd_manager, how='left', on='제품군')
sales

조금은 어렵게 느껴지실지 모르지만 몇 번 연습해보면 금방 익숙해지는 짧은 코드입니다. 판다스를 사용하면 훨씬 큰 데이터도 자유자재로 합치고 분할할 수 있습니다.

 

merger 더 알아보기

merge() 함수는 두 데이터프레임의 공통 컬럼 또는 인덱스를 기준으로 두 개의 데이터를 합칩니다. 이때 기준이 되는 컬럼을 키(key)라고 하며, 키를 기준으로 아래와 같이 네 가지 방법으로 연결할 수 있습니다.

 

- Inner Join: 두 데이터프레임에서 키 값이 일치하는 데이터만 합칩니다. how 옵션에 inner를 집어넣으면 됩니다. 
- Outer Join: 두 데이터프레임의 모든 데이터를 합칩니다. how 옵션에 outer를 집어넣으면 됩니다. 
- Left Outer Join: 데이터프레임의 A를 기준으로 A의 키 값을 충족하는 B의 데이터만 합칩니다. how 옵션에 left를 집어넣으면 됩니다. 
- Right Outer Join: 데이터프레임의 B를 기준으로 B의 키 값을 충족하는 A의 데이터만 합칩니다. how 옵션에 right를 집어넣으면 됩니다.

 

이를 그림으로 나타내면 아래와 같습니다. 

 

 

 

-이 글은 아나콘다(Anaconda3)가 설치된 환경을 기준으로 작성되었습니다.