콘텐츠로 건너뛰기
Home » 파이썬 데이터프레임 병합 및 조작 예시

파이썬 데이터프레임 병합 및 조작 예시

파이썬 데이터프레임 병합 이해하기

데이터 분석 작업에서 데이터프레임을 조작하는 것은 필수적인 과정입니다. 특히 두 개의 데이터프레임을 결합하는 것은 다양한 정보와 통찰을 얻는 데 있어 매우 중요한 방법입니다. 이번 포스트에서는 파이썬의 pandas 라이브러리에서 제공하는 merge() 함수를 중심으로 데이터프레임을 병합하는 방법에 대해 알아보도록 하겠습니다.

merge() 함수란?

merge() 함수는 SQL의 JOIN 구문과 유사한 방식으로 두 개 이상의 데이터프레임을 특정 기준에 따라 결합할 수 있는 강력한 도구입니다. 데이터프레임을 병합할 때는 기본적으로 공통된 키를 사용하여 행을 연결합니다. 이를 통해 두 데이터프레임의 정보를 효과적으로 통합할 수 있습니다.

병합 방식 옵션 설정하기

merge()에는 여러 가지 매개변수가 있어 원하는 방식으로 데이터를 결합할 수 있습니다. 주요 옵션으로는 howon, left_on, right_on이 있습니다.

  • how: 데이터프레임 병합 방식을 설정합니다. 사용 가능한 옵션으로는 ‘inner’, ‘outer’, ‘left’, ‘right’가 있습니다.
  • on: 공통된 열 이름을 기준으로 병합할 때 지정합니다.
  • left_on과 right_on: 서로 다른 열 이름을 기준으로 병합할 때 사용합니다.

데이터프레임 생성하기

우선 예시로 사용할 데이터프레임을 생성하겠습니다.

python
import pandas as pd
df1 = pd.DataFrame({
‘id’: [128940, 130960, 138250, 139480],
‘stock_name’: [‘한미약품’, ‘CJ E&M’, ‘엔에스쇼핑’, ‘이마트’],
‘value’: [**67, **67, **67, **33],
‘price’: [421000, 98900, 13200, 254500]
})
df2 = pd.DataFrame({
‘id’: [130960, 139480, 145990, 204210],
‘name’: [‘CJ E&M’, ‘이마트’, ‘삼양사’, ‘모두투어리츠’],
‘eps’: [6301.333333, **67, 5741.000000, 85.166667],
‘bps’: [54068, 295780, 108090, 5335],
‘per’: [15.695091, 13.931338, 14.283226, 40.802348],
‘pbr’: [1.829178, 0.860437, 0.758627, 0.651359]
})

왼쪽 기준으로 병합하기

이번에는 df1을 기준으로 df2와 병합을 진행해 보겠습니다. 두 데이터프레임이 서로 다른 열 이름을 가질 때 left_onright_on 옵션을 활용하여 병합할 수 있습니다.

python
merge_left = pd.merge(df1, df2, how=’left’, left_on=’stock_name’, right_on=’name’)
print(merge_left)

이렇게 하면 df1에 있는 모든 데이터와 df2에서 matching되는 데이터가 결합된 새로운 데이터프레임을 생성할 수 있습니다. 여기서 일치하지 않는 데이터는 NaN으로 표시됩니다.

불린 인덱싱과 결합하기

특정 조건에 맞는 데이터만 추출하고 이를 다른 데이터프레임과 병합하는 것도 가능합니다. 예를 들어, df1에서 price가 50000 미만인 데이터를 찾아 이를 df2와 병합할 수 있습니다.

python
price_filtered = df1[df1[‘price’] < 50000] merged_filtered = pd.merge(price_filtered, df2, how='inner', left_on='stock_name', right_on='name') print(merged_filtered)

이 코드는 price가 50000 미만인 데이터 중 df2와 공통으로 있는 데이터만을 추출하여 결합합니다.

concat() 함수로 데이터프레임 결합하기

파이썬에서 데이터프레임을 결합하는 또 다른 방법은 concat() 함수를 사용하는 것입니다. concat() 함수는 인덱스나 열을 기준으로 단순히 데이터프레임을 붙여주는 기능을 제공합니다. 이 방법은 키가 없는 데이터프레임에도 사용할 수 있습니다.

데이터프레임 결합 예제

다음과 같이 df1과 df2를 열 방향으로 결합해 보겠습니다.

python
result = pd.concat([df1, df2], axis=1)
print(result)

이 경우, 두 데이터프레임의 인덱스가 다를 경우 NaN으로 비어있는 값을 채워 결과가 나옵니다.

병합 방식 선택하기

concat() 함수는 join 옵션을 통해 inner 또는 outer 방식으로도 결합할 수 있습니다. 예를 들어, 공통된 인덱스만 결합하고 싶다면 inner 옵션을 사용합니다.

python
result_inner = pd.concat([df1, df2], axis=1, join=’inner’)
print(result_inner)

이렇게 하면 두 데이터프레임에서 공통된 인덱스만을 가진 행이 결합된 결과를 볼 수 있습니다.

마무리

이번 포스트에서는 파이썬에서 데이터프레임을 병합하고 결합하는 여러 방법에 대해서 알아보았습니다. merge() 함수는 데이터베이스와 유사한 방식으로 데이터를 연결할 때 유용하며, concat() 함수는 보다 간단하게 여러 판다스 데이터프레임을 조합하는데 큰 도움이 됩니다.

데이터 분석 작업에서 이 두 가지 방법은 매우 유용하게 사용될 수 있으며, 각각의 특성에 맞게 적절한 방식을 선택해 사용하는 것이 중요합니다. 앞으로도 pandas 활용에 대해 더 많은 내용을 다루어 보도록 하겠습니다.

자주 찾는 질문 Q&A

데이터프레임 병합을 할 때 어떤 함수를 사용할 수 있나요?

데이터프레임을 결합할 때는 주로 pandas의 merge() 함수를 활용합니다. 이 함수는 SQL의 JOIN처럼 두 데이터프레임을 특정 기준으로 연결하는 데 유용합니다.

병합할 때 어떤 방식으로 데이터를 결합할 수 있나요?

병합 방식은 ‘inner’, ‘outer’, ‘left’, ‘right’ 등의 옵션을 통해 설정할 수 있습니다. 각 방식은 데이터 집합의 일치 여부에 따라 결과가 달라집니다.

concat() 함수는 무엇인가요?

concat() 함수는 여러 데이터프레임을 단순히 붙여주는 기능을 제공합니다. 이 방법은 키 없이도 데이터를 결합할 수 있어 간편합니다.

데이터프레임을 필터링 후 병합할 수 있나요?

네, 특정 조건을 만족하는 데이터만 추출해 다른 데이터프레임과 합치는 것이 가능합니다. 예를 들어, 가격이 특정 값 이하인 데이터만 유지하고 병합할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다