[python] 데이터 합치기와 결합하기

데이터 분석 작업을 할 때, 여러 데이터셋을 합쳐야 하는 경우가 종종 있습니다. 판다스(Pandas) 라이브러리는 이러한 작업을 쉽게 수행할 수 있도록 도와줍니다. 이번 포스트에서는 판다스를 사용하여 데이터를 합치고 결합하는 다양한 기술에 대해 살펴보겠습니다.

목차

  1. 데이터 병합(Merge)
  2. 인덱스를 기준으로 데이터 병합하기
  3. 데이터 연결(Concatenate)
  4. 데이터 조인(Join)
  5. 결론

1. 데이터 병합(Merge)

판다스merge 함수를 사용하면 하나 이상의 키(기준 열)를 사용하여 데이터프레임을 병합할 수 있습니다. 여러 데이터프레임의 공통 열이나 인덱스를 기준으로 데이터를 병합할 때 유용합니다.

예를 들어, 다음과 같이 두 개의 데이터프레임이 있다고 가정해봅시다.

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

이제 key 열을 기준으로 데이터프레임을 병합해 보겠습니다.

merged_df = pd.merge(df1, df2, on='key')
print(merged_df)

결과:

  key  value_x  value_y
0   B        2        5
1   D        4        6

2. 인덱스를 기준으로 데이터 병합하기

merge 함수를 사용할 때 인덱스를 기준으로 데이터를 병합하고자 할 때는 left_index=True 또는 right_index=True 옵션을 사용합니다.

예를 들어, 다음과 같이 두 개의 데이터프레임이 있다고 가정해봅시다.

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']},
                   index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'],
                    'D': ['D0', 'D1', 'D2']},
                   index=['K0', 'K2', 'K3'])

이제 인덱스를 기준으로 데이터프레임을 병합해 보겠습니다.

merged_df = pd.merge(df1, df2, left_index=True, right_index=True, how='outer')
print(merged_df)

결과:

     A    B    C    D
K0   A0   B0   C0   D0
K1   A1   B1  NaN  NaN
K2   A2   B2   C1  D1
K3  NaN  NaN   C2  D2

위 예제에서 how='outer' 옵션은 합집합을 수행하여 모든 인덱스를 포함한 결과를 반환합니다.

3. 데이터 연결(Concatenate)

판다스concat 함수를 사용하면 일련의 데이터를 빠르고 쉽게 연결할 수 있습니다.

예를 들어, 다음과 같이 두 개의 시리즈가 있다고 가정해봅시다.

s1 = pd.Series(['a', 'b'])
s2 = pd.Series(['c', 'd'])

이제 시리즈를 연결해 보겠습니다.

concatenated_series = pd.concat([s1, s2])
print(concatenated_series)

결과:

0    a
1    b
0    c
1    d

4. 데이터 조인(Join)

join 메서드를 사용하면 열을 기준으로 데이터프레임을 조인할 수 있습니다.

예를 들어, 다음과 같이 두 개의 데이터프레임이 있다고 가정해봅시다.

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']},
                   index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2']},
                   index=['K0', 'K2', 'K3'])

이제 열을 기준으로 데이터프레임을 조인해 보겠습니다.

joined_df = df1.join(df2, how='outer')
print(joined_df)

결과:

     A    B    C    D
K0   A0   B0   C0   D0
K1   A1   B1  NaN  NaN
K2   A2   B2   C2  D1
K3  NaN  NaN   C3  D2

위 예제에서 how='outer' 옵션은 합집합을 수행하여 모든 열을 포함한 결과를 반환합니다.

5. 결론

이번 포스트에서는 판다스를 사용하여 데이터를 합치고 결합하는 방법에 대해 알아보았습니다. 데이터 분석을 할 때, 데이터를 효과적으로 관리하기 위해서는 데이터를 합치는 방법에 대해 잘 이해하고 있어야 합니다. 판다스의 다양한 기능을 이용하여 데이터를 쉽게 합치고 결합하여 효율적인 작업을 수행할 수 있습니다.