데이터분석 전처리 | 데이터 병합 | CONCAT( )과 MERGE( ) 함수 | axis 의미 | Pandas 데이터프레임 | 위, 아래로 합치기 | 좌, 우로 합치기

    728x90

     

    [참고 웹사이트]

    https://pandas.pydata.org/docs/user_guide/merging.html#merge-join-concatenate-and-compare

     

    Merge, join, concatenate and compare — pandas 2.2.0 documentation

    Merge, join, concatenate and compare pandas provides various methods for combining and comparing Series or DataFrame. The concat() function concatenates an arbitrary amount of Series or DataFrame objects along an axis while performing optional set logic (u

    pandas.pydata.org

     

    1. 데이터 위, 아래 / 좌, 우로 합치기 (axis)

     

    ▶ axis란?

    : 연결하고자 하는 축(방향)을 지정할 때 사용

    : 기본값은 0으로, 데이터의 마지막 행을 기준으로 위, 아래로 연결할 때 사용됨

    : 1로 설정하면, 데이터의 열을 기준으로 제일 오른쪽 열을 기준으로 좌, 우로 연결할 때 사용됨

     

    1-1) axis = 0 위, 아래로 합쳐짐

    axis=0


     

    1-2) axis = 1 좌, 우로 합쳐짐

    axis=1


    2. CONCAT()

     

    ▶ CONCAT() 함수 주요 매개변수

    • axis = 0 또는 1 데이터프레임을 상하 좌우로 연결할 수 있음
    • ignore_index = True 또는 False  
      기본값은 False, 원래의 데이터프레임 인덱스를 유지함
      True로 설정하면, 기존 인덱스를 무시하고 새롭게 인덱스를 설정해줌

    ▶ CONCAT() 함수 예시

    import pandas as pd
    
    # 두 개의 데이터프레임 생성
    df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']})
    df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'], 'D': ['D0', 'D1', 'D2']})
    
    # 위아래로 데이터프레임 연결
    result_vertical = pd.concat([df1, df2], axis=0)
    
    # 좌우로 데이터프레임 연결
    result_horizontal = pd.concat([df1, df2], axis=1)
    
    print("위아래 연결 결과:\n", result_vertical)
    print("\n좌우 연결 결과:\n", result_horizontal)

     

    >> 지금 여기에서 [위, 아래 연결 결과]의 경우,

    붙이려는 두 개의 데이터프레임의 컬럼명이 동일하지 않아서 각자 없는 값은 NaN 처리된 상태로 붙음

    그리고 인덱스의 값이 붙기 이전의 인덱스인 0, 1, 2로 유지되는 것을 볼 수 있음

    이 때 ignore_index = True로 해주면 인덱스가 새롭게 설정됨

    result_vertical = pd.concat([df1, df2], axis=0, ignore_index=True)

     

    >> 인덱스가 0, 1, 2, 3, 4, 5새롭게 생성되어 부여된 것을 볼 수 있음


    3. MERGE()

     

    ▶ MERGE() 함수 주요 매개변수

    • SQL의 JOIN 연산과 유사한 방식으로 데이터프레임을 합칠 수 있음
      주로 두 개 이상의 데이터프레임에서 공통된 열이나 인덱스를 기준으로 데이터를 병합할 때 활용됨
    • left 또는 right 병합할 데이터프레임 중 기준이 되는 데이터프레임 설정 시 활용
    • how = 'inner', 'outer, 'left', 'right' 옵션  병합 방법 설정 시 활용
      •  'inner' : 공통된 키(열)을 기준으로 교집합을 만듦
      • 'outer' : 공통된 키(열)를 기준으로 합집합을 만듦
      • 'left' : 왼쪽 데이터프레임의 모든 행은 포함하고, 오른쪽 데이터프레임은 공통된 키에 해당하는 행만 포함함
      • 'right' : 오른쪽 데이터프레임의 모든 행은 포함하고, 왼쪽 데이터프레임은 공통된 키에 해당하는 행만 포함함
    • on 병합 기준이 되는 열 이름(또는 열 이름의 리스트)을 지정함
      • left_on 과 right_on 왼쪽 데이터프레임과 오른쪽 데이터프레임에서 병합할 열 이름이 다른 경우 사용

     

    ▶ MERGE() 함수 예시

    import pandas as pd
    
    # 두 개의 데이터프레임 생성
    left_df = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
    right_df = pd.DataFrame({'key': ['B', 'C', 'E', 'F'], 'value': [5, 6, 7, 8]})
    
    # 'key' 열을 기준으로 두 데이터프레임 병합
    merged_df = pd.merge(left_df, right_df, on='key', how='조인방법')
    
    print(merged_df)

     

    ① INNER 조인

    merged_df = pd.merge(left_df, right_df, on='key', how='inner')

    inner

     

    ② OUTER 조인

    merged_df = pd.merge(left_df, right_df, on='key', how='outer')

    outer

     

    ③ LEFT 조인

    merged_df = pd.merge(left_df, right_df, on='key', how='left')

    left

    >> 왼쪽 데이터프레임 값은 다 들어가고, 오른쪽 데이터프레임 값은 공통되는 것만 들어감

     

    ④ RIGHT 조인

    merged_df = pd.merge(left_df, right_df, on='key', how='right')

    right

    >> 오른쪽 데이터프레임 값은 다 들어가고, 왼쪽 데이터프레임 값은 공통되는 것만 들어감

    728x90

    댓글