History
home
BDA 연혁
home

- 데이터 병합(1)

데이터 병합 기본

판다스에서 데이터 병합은 다양한 데이터셋을 하나로 통합하는 과정이다. 이 과정은 데이터 분석에서 중요한 단계 중 하나로, 서로 다른 출처에서 온 데이터를 합치거나, 관련된 정보를 결합하여 분석을 위한 데이터셋을 구성할 때 사용된다. Pandas는 주로 concat, merge 함수를 사용하여 데이터를 병합한다.

1. Concat 함수

concat 함수는 데이터프레임을 축(위에서 아래로, 또는 좌에서 우로)에 따라 연결한다.
주로 동일한 형태의 데이터를 하나로 합칠 때 사용된다.
작동 원리 및 활용방법:
concat은 주어진 축(axis)을 따라 여러 데이터프레임을 연결합니다. 기본적으로 축은 0으로 설정되어 있으며, 이는 행 방향(위에서 아래로)으로 데이터프레임을 연결한다.
인덱스가 중복될 수 있으며, ignore_index=True 옵션을 사용하여 새 인덱스를 할당할 수 있다.
keys 인자를 사용하여 연결된 데이터프레임에 계층적 인덱스를 추가할 수 있다.
실습코드
import pandas as pd df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']}) df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']}) result = pd.concat([df1, df2], ignore_index=True) print(result)
Python
복사

2. Merge 함수

merge 함수는 데이터프레임을 특정 기준에 따라 결합한다. SQL의 JOIN과 유사하게 작동하며, 하나 이상의 키를 기준으로 데이터를 병합한다.
작동 원리 및 활용방법:
merge는 두 데이터프레임의 공통 열이나 인덱스를 기준으로 합친다. 이때 on, left_on, right_on, how 등의 인자를 사용하여 병합 방식을 세밀하게 조정할 수 있다.
how 인자는 'left', 'right', 'inner', 'outer'와 같은 병합 방식을 지정한다. 이는 각각 왼쪽 우선, 오른쪽 우선, 교집합, 합집합에 해당한다.
병합 시, 열 이름이 겹치지 않는 경우 자동으로 접미사(_x, _y)가 추가된다.
실습코드
df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2'], 'A': ['A0', 'A1', 'A2']}) df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2'], 'B': ['B0', 'B1', 'B2']}) result = pd.merge(df1, df2, on='key') print(result)
Python
복사
concat은 구조가 유사한 데이터셋을 단순히 연결할 때 유용하고, merge는 두 데이터셋 간의 관계를 정의하여 보다 복잡한 데이터 결합 작업에 적합하다.

Concat, Marge 함수를 활용한 데이터 정합성 확인

데이터 정합성 확인은 데이터가 일관되고 정확하게 결합되었는지 확인하는 과정이다.
데이터 정합성 확인 과정은 다음과 같다:
데이터 결합 후 행과 열의 수 체크: 예상되는 행과 열의 수가 실제와 일치하는지 확인
중복 데이터 체크: .duplicated() 메소드를 사용하여 중복 행이 있는지 확인
결측치 체크: .isnull() 또는 .notnull() 메소드를 사용하여 결측치가 있는지 확인
키 컬럼의 유니크성 체크: 결합 과정에서 사용된 키 컬럼이 유니크한 값만을 가지고 있는지 확인한다. 이는 merge 작업에서 특히 중요하다.
concat을 활용한 정합성 확인
import pandas as pd # 데이터프레임 생성 df1 = pd.DataFrame({'Name': ['John', 'Anna'], 'Age': [28, 22]}) df2 = pd.DataFrame({'Name': ['Peter', 'Linda'], 'Age': [24, 29]}) # Concat을 사용하여 데이터프레임 결합 df_concat = pd.concat([df1, df2], ignore_index=True) # 데이터 정합성 체크 print("결합된 데이터프레임:\n", df_concat) print("중복 데이터 체크:\n", df_concat.duplicated().any()) # 중복 데이터 확인
Python
복사
marge를 활용한 정합성 확인
# 데이터프레임 생성 df3 = pd.DataFrame({'key': ['K0', 'K1'], 'Age': [28, 22]}) df4 = pd.DataFrame({'key': ['K0', 'K2'], 'City': ['New York', 'Berlin']}) # Merge를 사용하여 데이터프레임 결합 df_merge = pd.merge(df3, df4, on='key', how='inner') # 데이터 정합성 체크 print("결합된 데이터프레임:\n", df_merge) print("결합된 데이터의 키 유니크성 체크:\n", df_merge['key'].is_unique) # 키 컬럼의 유니크성 확인
Python
복사