목차
1. 주제 소개
간단한 판다스 사용 요령을 하나 소개한다.
두 개의 데이터프레임을 비교, 대조하는 메서드로서 판다스는 join과 merge를 제공한다.
아마 데이터프레임 간에 겹치는 항목들, 즉 교집합을 구하는 데에 가장 자주 사용할 것이다.
그런데 join과 merge에 관한 판다스 문서를 보면 데이터프레임 간에 겹치치 않는 항목들, 즉 차집합을 구하는 방법은 나와 있지가 않다.
예를 들어, 위의 도표에서 B가 기존에 가지고 있던 목록이고, A가 새로 확보한 목록인 경우, 기존 목록에는 없고 새로 확보한 목록에만 있는 항목을 뽑아내려면 어떻게 해야 할까?
2. 판다스로 차집합 구하기
아래의 자료를 대조하고 싶다고 가정하자. df1은 지난 달의 손님 목록이고, df2는 이번 달의 손님 목록이다.
이 중에서 df1에는 없고 df2에만 있는 손님의 목록만 뽑아내고 싶다. 예제에서는 ‘박코딩’이라는 것을 바로 알 수 있지만 데이터가 조금만 커져도 표만 봐서는 알기 어려울 것이다.
아쉽지만 판다스에서 제공하는 join과 merge만 이용해서는 차집합만 바로 추출해서 볼 수가 없고, 3단계를 거쳐야 한다.
먼저 how를 ‘outer’로 두고 merge를 한다. 이때, indicator를 True로 두면 아래와 같이 _merge 열이 새로 생기면서 각 항목이 어느 쪽에 속하는지가 표시된다.
그런 다음 query를 이용해 _merge열의 값이 right_only인 값만 필터링하고, 마지막으로 _merge열을 drop해준다.
아래와 같이 merge, query, drop을 한번에 할 수도 있다.
[참고]
예제 코드와 판다스 데이터프레임 merge에 관한 설명글의 링크를 첨부하니 참고하기 바란다
pd.merge(df1, df2, how='outer', indicator = True).query('_merge == "right_only"').drop(columns=['_merge']))
https://towardsdatascience.com/how-to-merge-pandas-dataframes-221e49c41bec
'코딩 > 데이터분석(Pandas, ML, etc)' 카테고리의 다른 글
파이썬과 사이킷럿(scikit-learn)을 이용한 머신러닝 예제/신용카드 부정 탐지(파트 2/2) (0) | 2022.03.06 |
---|---|
파이썬과 사이킷럿(scikit-learn)을 이용한 머신러닝 예제/신용카드 부정 탐지(파트 1/2) (0) | 2022.02.09 |
파이썬 머신러닝 라이브러리 Scikit-learn(사이킷런) 사용법 (0) | 2022.01.30 |
웹사이트(인터넷)에서 표를 판다스(Pandas) 데이터프레임으로 불러오는 방법/read_html (0) | 2021.12.27 |
판다스(Pandas)에서 시트가 여러 개인 엑셀 파일을 불러오는 방법 (0) | 2021.12.16 |
댓글