데이터 분석에서 데이터프레임을 병합하는 과정은 매우 중요합니다. Pandas 라이브러리를 활용하면 다양한 데이터프레임을 손쉽게 결합할 수 있습니다. 이번 포스팅에서는 Pandas를 사용하여 데이터프레임을 병합하는 방법에 대해 구체적으로 알아보겠습니다.

Pandas 소개

Pandas는 파이썬에서 데이터 조작과 분석을 위한 강력한 라이브러리입니다. 데이터프레임은 Pandas의 핵심 데이터 구조로, 2차원 데이터 배열을 표 형식으로 다룰 수 있도록 해줍니다. 데이터프레임을 병합하는 방법은 여러 가지가 있지만, 가장 일반적으로 사용되는 메서드는 merge(), concat(), join() 입니다.

데이터프레임 생성

우선, 두 개의 데이터프레임을 생성해 보겠습니다. 아래의 코드에서는 샘플 데이터를 포함한 두 개의 데이터프레임을 만듭니다.

import pandas as pd

data1 = {
    '학생ID': [1, 2, 3, 4],
    '이름': ['김철수', '이영희', '박민수', '최지훈'],
    '학년': [1, 2, 1, 3]
}
df1 = pd.DataFrame(data1)

# 두 번째 데이터프레임
data2 = {
    '학생ID': [2, 4, 1, 3],
    '과목': ['수학', '과학', '영어', '역사'],
    '점수': [90, 85, 78, 93]
}
df2 = pd.DataFrame(data2)

print("첫 번째 데이터프레임:")
print(df1)
print("\n두 번째 데이터프레임:")
print(df2)

데이터프레임 병합

Pandas의 merge() 메서드를 사용하면 두 개의 데이터프레임을 특정 키를 기준으로 병합할 수 있습니다. 위의 예시에서는 학생ID를 기준으로 병합해보겠습니다.

# 데이터프레임 병합
merged_df = pd.merge(df1, df2, on='학생ID')
print("\n병합된 데이터프레임:")
print(merged_df)

위의 코드를 실행하면 학생ID를 기준으로 두 데이터프레임이 병합된 결과를 확인할 수 있습니다.

병합 방식

Pandas의 merge() 함수는 다양한 병합 방식을 지원합니다. 기본적으로는 inner join 방식으로 병합되지만, how 매개변수를 사용하여 다른 방식도 지정할 수 있습니다.

  • inner: 기본값. 두 데이터프레임에 모두 존재하는 키에 대해서만 병합합니다.
  • outer: 모든 데이터프레임의 키를 포함하여 병합합니다.
  • left: 왼쪽 데이터프레임의 모든 키를 포함하여 병합합니다.
  • right: 오른쪽 데이터프레임의 모든 키를 포함하여 병합합니다.

예를 들어, outer 방식으로 병합해 보겠습니다.

# outer 방식으로 데이터프레임 병합
outer_merged_df = pd.merge(df1, df2, on='학생ID', how='outer')
print("\nouter 방식으로 병합된 데이터프레임:")
print(outer_merged_df)

여러 데이터프레임 병합하기

여러 데이터프레임을 병합할 때는 concat() 메서드를 사용할 수 있습니다. 아래의 예에서는 세 개의 데이터프레임을 세로 방향으로 병합해 보겠습니다.

# 세 개의 데이터프레임 생성
data3 = {
    '학생ID': [5, 6],
    '이름': ['홍길동', '이몽룡'],
    '학년': [2, 3]
}
df3 = pd.DataFrame(data3)

# 데이터프레임 세로 방향으로 병합
concat_df = pd.concat([df1, df3], ignore_index=True)
print("\n세로 방향으로 병합된 데이터프레임:")
print(concat_df)

마무리

이번 포스팅에서는 Pandas를 사용하여 데이터프레임을 병합하는 다양한 방법에 대해 알아보았습니다. merge()와 concat() 메서드를 활용하면 데이터 분석에 필요한 다양한 형태로 데이터를 결합할 수 있습니다. 데이터프레임 병합은 데이터 전처리 과정에서 필수적인 작업이므로, 이러한 기법들을 잘 활용하여 더 효과적인 데이터 분석을 진행하시기 바랍니다. Pandas의 다양한 기능을 익히고 활용해 보세요!