본문 바로가기
[파이썬]/[파이썬]엑셀

[파이썬_엑셀]10. Pandas로 두개표 비교 하기

by abooda 2022. 7. 6.
반응형

[파이썬_엑셀][10. Pandas로 두개표 비교 하기-블로그 요약]

Pandas를 통해서 두개의 표를 비교하는 방법에 대해서 설명하겠습니다.

간단히, 두개의 표에서 합집합의 개념으로 열과 행의 Index를 합치고

합친 Index를 기존표에 다시 재 적용하고 비교하는 방법입니다.

[파이썬_엑셀]10. Pandas로 두개표 비교 하기

이번에는 Pandas를 통해서 두개의 표를 비교하는 방법에 대해서 진행하겠습니다.

이번에 진행할 내용은 "9. Pandas의 union1d와 reindex" 내용을 참조하여 진행하겠습니다.

 

https://abooda.tistory.com/112

 

[파이썬_엑셀]9. Pandas의 union1d와 reindex

[파이썬_엑셀][9. Pandas의 union1d와 reindex-블로그 요약] Pandas에서 특히 두개의 표를 비교위해서 필요한 union1d와 reindex에 대해서 설명하겠습니다. 간단히, union1d: 두개의 index를 전부 포함하는 항..

abooda.tistory.com

 

일단 두개의 표를 비교하기 위해서 가장 중요한 부분은

 

"열과 행의 Index을 동일하게 만들어 줘야합니다."

 

표를 비교하는 방법은 하기의 순으로 진행할 예정입니다.

 

[정의] - Pandas로 열과 행의 값 재 배열하기

1. 두개의 표를 불러온다.

2. 두개의 표에서 비교의 기준이 되는 행의 값을 설정하고 열의 기본 Index로 설정한다.

3. 두개의 표의 행과 열의 Index가 누락되지 않도록 합치고, 합친 열과 행의 Index를 기존에 표에 적용한다.

[예를들면]

A의 표의 행의 Index: 사과, 포도, 배

B의 표의 행의 Index: 바나나, 사과, 배추

--> 두개의 표의 행의 Index를 합친 후의 Index(합집합 개념): 사과, 포도, 배, 바나나, 배추 

4. 표를 비교한다.

5. 비교한 표를 엑셀에 입력한다.

 

내용은 굉장히 주관적이고 전문적으로 공부를 하신분들이 보기에 굉장이 부족한점이 있으니,

참조 부탁드립니다.

 

1. 엑셀에서의 값 불러오기(Pandas 사용)

우선 엑셀 파일에서 값을 불러오고 표시형식을 확인하는 방법에 대해서 진행 하겠습니다.

 

진행방식은 Pandas로 데이터를 불러와서 편집하고, Openpyxl로 데이터를 입력하는 방식으로 진행하겠습니다.

 

[불러올 엑셀의 내용]

1.  파일명: compare.xlsx

2.  시트명: Before, After

3.  엑셀 세부 내용 및 불러올 내용 정보

Before 시트
After 시트

[파이썬 실행화면]

1. 불러올 파일을 지정하고 새롭게 저장할 파일의 위치 지정

2. 엑셀 파일 불러오기(Openpxyl)

3. 엑셀 파일 불러오기(Pandas)

 

2. 두개의 표에서 비교의 기준이 되는 행의 값 설정 및 열의 Index 설정

Pandas로 두개의 표에서 열과 행의 Index를 불러와서 두개의 표를 같이 표시 할 수 있는 Index를 만들겠습니다.

 

1. 비교 기준으로 세울 항목을 행의 Index내에서 선택하기

2. 선택한 행의 Index의 열을 각각의 표의 Index로 재 설정하기

Index 재 설정 후의 Sheet1의 표

 

[잠깐만!!]

비교의 기준이 되는 행의 Index의 열의 값 내에서 중복값이 있으면, 에러가 발생함.

반드시, 비교의 기준이 되는 행의 값안에는 중복값이 있으면 안됨.

 

[엑셀값]

[에러 메시지] - 기준이 되는 값을 행의 Index 값내에서 '파는곳'으로 설정

 

3. 두개의 표의 행과 열의 Index가 누락되지 않도록 합치기

Pandas로 두개의 표에서 열과 행의 Index를 불러와서 두개의 표를 같이 표시 할 수 있는 Index를 만들겠습니다.

 

1. 열의 Index 모든 값들이 포함되 열의 Index와 행의 Index 모든 값들이 포함된 행의 Index를 만들기

-. 열과 행의 각각의 Index를 합치기 위해서 "union1d"를 사용함.

union_rows
union_columns

2. 새롭게 만들 행과 열의 Index로 표를 재 배치하기

before_new
after_new

 

4. 표를 비교하기

두개의 표의 열과 행의 Index를 동일하게 만든 뒤에는, 두개의 표를 비교합니다.

두개의 표를 비교한 결과(diff)

 

5. 비교한 표를 입력하기기

Pandas로 비교환 표를 엑셀에 입력하기 전에는 두가지 작업이 반드시 진행해야 합니다.

 

1. Multi Index를 Single Index로 변경하기

[Multi Index]

[Single Index]

[잠깐만!!]

Pandas로 비교한 표가 하기와 같이 Multi Index로 행의 값이 표현되면, Openpyxl로 엑셀로

이동을 할 수가 없음.

 

[표 비교후에 Multi Index로 표현된 Pandas표]

 

[에러 메시지]

 

2. "NaT"로 입력된 값을 "None"으로 변경하기

[잠깐만!!]

Pandas로 비교한 표내에서 "NaT"항목이 있으면 하기와 같은 메시지가 발생되고,

Openpyxl로 엑셀로 표 이동이 안됨.

 

[Pandas로 비교한 표 내에서 표현된 "NaT"]

[에러 메시지]

 

[추가해야 되는 내용]

변경된 엑셀시트(Multi Index를 Single Index/"NaT"를 "None"으로 변경)

 

3. 신규 엑셀 시트를 만들고 표를 입력하고 저정하기

스타일함수, 셀크기 자동조절, 날짜 Format정리 진행 후의 표의 상태

*** Your memories make your destiny ***

반응형

댓글