ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 판다스(pandas) 데이터 합치기 concat&merge 활용
    금융퀀트/프로그램기초 2023. 6. 15. 06:49
    반응형

    concat 함수 활용

    concat 함수 예제: 기초데이터

    파이썬의 pandas 라이브러리를 이용하면, 기존의 데이터 아래쪽에(행 기준) 데이터를 붙일 수도 있고, 오른쪽에(열 기준) 데이터를 붙일 수도 있다. 이 때 사용하는 함수가 concat 이다. 함수의 사용을 위해서 아래 그림 1과 같이 종목코드와 종목명 컬럼을 공통으로 가지는 df1과 df2 의 데이터 예시를 생각해 볼 수 있다. df1은 종목코드, 종목명, 배당수익률로 이루어진 데이터이고, df2는 종목코드, 종목명, pbr 로 이루어진 데이터이다.

    그림1: df1, df2 데이터 설정

    concat 함수의 사용과 axis 옵션

    df1, df2를 이용해서 concat 함수를 사용하면 아래 그림2와 같다. 앞에 오는 df1이 기준이 되는 데이터, df2가 붙일 데이터, axis는 데이터를 붙일 방향을 나타낸다. axis를 0으로 주면 데이터가 df1(기준 데이터)를 기준으로 아래쪽에 붙고(그림 2 좌측), axis를 1로 주면 df1(기준 데이터)를 기준으로 오른쪽에 붙는다(그림 2우측).

    그림2: concat 사용 예시

    merge 함수 활용

    merge 와 concat 의 차이

    concat 함수는 별다른 조건 없이 데이터를 붙이는 것이다. 그런데 merge 함수를 통해서 데이터를 단순히 붙이는 것이 아니라 공통되는 키(Key)컬럼을 기준으로 데이터를 묶을 수도 있다. 예시 데이터인 df1과 df2로 설명하면, df1과 df2가 종목코드, 종목명 컬럼이 공통되므로 이를 기준으로 데이터를 묶어낼 수 있다는 뜻이다. 아래 그림 3의 위쪽 벤다이어 그램으로 설명하면, 주황색 동그라미가 df1의 종목코드, 종목명 데이터이고, 파란색 동그라미가 df2의 종목코드, 종목명 데이터가 된다는 것이다. 가운데 겹치는 부분은 삼성전자의 종목코드와 종목명이 된다.

    그림3: 데이터 merge 방식 네 가지

    이 때 데이터를 합치는 방법은 위 그림 3의 아랫 부분처럼 네 가지가 있을 수 있는데, 예시 데이터인 df1과 df2로 설명하면 아래와 같다.

    1. df1 의 종목코드, 종목명을 기준으로 합치는 방법(LEFT)
    2. df2의 종목코드, 종목명을 기준으로 합치는 방법(RIGHT)
    3. df1과 df2의 종목코드, 종목명의 합집합을 사용하는 방법(OUTER)
    4. df1과 df2가 모두 갖고 있는 종목코드, 종목명을 기준으로 합치는 방법(INNER) 

    merge 함수의 사용과 on, how 옵션

    df1, df2를 이용해서 merge 함수를 사용하면 아래 그림 4와 같다. 앞에 오는 df1이 기준이 되는 데이터, df2가 붙일 데이터, how 는 위 그림 3 하단의 네 가지 방식 중 어떤 방식으로 데이터를 뽑을지를 나타낸다.

    그림4: merge 의 how 설정에 따른 네 가지 데이터

    on 조건을 주지 않으면 두 데이터의 공통되는 컬럼을 기준으로 데이터를 합친다. 위 그림 4에서 df1과 df2는 모두 종목코드와 종목명을 갖고 있으니 on 조건을 주지 않으면 종목코드, 종목명을 기준으로 데이터를 합치게 되는 것이다. 하지만 on 을 이용해서 특정 컬럼만 키( Key)로 잡을 수 있다. 예를 들어 on 을 이용해서 종목코드만 키(Key)로 잡았을 때는 아래 그림 5와 같은 결과가 나온다.

    그림5: on 설정시 데이터 merge 예시

    반응형
Designed by Tistory.