방명록
- [Pandas] merge() 메소드를 사용하여 데이터 병합하기2024년 01월 08일 17시 47분 07초에 업로드 된 글입니다.작성자: 묭동이
안녕하세요 이번 글에서는 merge() 메소드를 사용하여 데이터를 병합하는 방법에 대해서 알아보겠습니다.
먼저 pandas 라이브러리를 불러와줍니다.
import pandas as pd
라이브러리를 불러온 후 DataFrame 객체 두 개를 생성합니다.
이후 merge() 메소드를 사용하여 df_A_B와 df_C_D를 병합해줍니다.
join() 메소드를 사용하여 병합을 하려고 하니, 아래와 같은 에러가 발생했습니다.
이유는 칼럼이 중복되었기 때문입니다 ! join() 메소드를 사용하여 데이터를 병합하고 싶은 경우에는
병합하고자 하는 데이터에서 칼럼이 중복되지 않도록 하여야 합니다.
ValueError: columns overlap but no suffix specified: Index(['판매월'], dtype='object')
df_C_D DataFrame 객체의 '판매월' 칼럼을 지운 후 join() 메소드를 사용하니 데이터 병합이 문제없이 수행된 것을 확인할 수 있습니다.
merge() 메소드에는 아래와 같이 많은 옵션을 줄 수 있는데요 이 중 how에 해당하는 옵션을 예시를 통해 익혀보겠습니다.
SQL을 이용하여 여러 개의 테이블을 조인하는 것과 유사한 중요한 개념입니다 !
먼저 DataFrame 객체 두 개를 만든 후 잘 만들었는지 확인해보겠습니다.
출력결과 key에 해당하는 value 값들이 잘 들어간 것을 확인할 수 있습니다
dictionary 데이터 타입을 이용하여 DataFrame 객체를 만들때 dictionary 데이터 타입의 key 값은 '열' value 값은 '행'에 위치하게 됩니다.
[merge() method join option]
1. left join : how='left'
- df_left의 모든 행과 df_right에서 key 값이 일치하는 행을 결합합니다.
- df_left에 있는 key 값이 df_right에 없으면, 해당 위치의 df_right의 열 값은 NaN이 됩니다.
- 즉, df_right DataFrame 객체에는 'key'값이 'C'에 해당하는 'right' 값이 없으므로 Nan으로 나오게 됩니다.
2. right join : how='right'
- df_right의 모든 행과 df_left에서 key값이 일치하는 행을 결합합니다.
- df_right에 있는 key값이 df_left에 없으면, 해당 위치의 df_left의 열 값은 NaN이 됩니다.
- 즉, df_left DataFrame 객체에는 'key'값이 'D'에 해당하는 'left' 값이 없으므로 Nan으로 나오게 됩니다.
3. (full) outer join : how='outer'
- df_left와 df_right의 모든 행을 결합하고, 일치하는 key값이 없는 경우 NaN으로 채웁니다.
- 결과적으로 양쪽 데이터프레임의 모든 key값이 포함됩니다.
- 즉, df_right DataFrame 객체에는 key값이 'C'에 해당하는 'right' 값이 없으므로 Nan으로 나오게 되며 df_left DataFrame 객체에는 key값이 'D'에 해당하는 left 값이 없으므로 NaN으로 나오게 됩니다.
4. inner join : how='inner'
- df_left와 df_right 양쪽 모두에서 일치하는 key값만을 가지는 행을 결합합니다.
- how='inner'의 경우 defualt option으로 두 DataFrame의 일치하는 부분만 가져오는 일종의 "교집합"으로 이해해주시면 될 것 같습니다.
- 즉, 양쪽 데이터프레임에 공통으로 존재하는 key값에 대한 행만 결과에 포함됩니다.
- df_left와 df_right의 key 값은 'A'와 'B'만 일치하므로 'A'와 'B'에 해당하는 데이터만 가져오는 것을 알 수 있습니다.
틀린 부분 댓글로 작성해주시면 감사하겠습니다 😊
Reference
'Data Analystics > pandas' 카테고리의 다른 글
[Pandas] '.copy()' vs '=': 깊은 복사(Deep Copy) vs 얕은 복사(Shallow copy) (0) 2024.01.15 [Pandas] groupby() 메소드를 사용하여 데이터 그룹화하기 (4) 2024.01.09 [Pandas] join() 메소드를 사용하여 데이터 통합하기 (0) 2024.01.08 [Pandas] concat() 메소드를 사용하여 데이터 통합하기 (2) 2024.01.08 [Pandas] manipulate textual data(문자형 데이터 다루기) (2) 2024.01.06 다음글이 없습니다.이전글이 없습니다.댓글