저번 판다스pandas 를 이용한 데이터 선택하기에 이어서 이번 포스팅에서는 데이터 통합하기, 저장하기, 집계하기를 공부해보려고 합니다.
"판다스 기초-데이터 선택하기" 포스팅을 보실 분들은 아래 링크로 이동해주세요 ▼
https://pyrstudy.blogspot.com/2021/01/blog-post_13.html
저번 포스팅에 이어서 이번에도 sample_1 엑셀 자료를 사용할 예정이고
sample_codemaster.xlsx 과 sample_2.xlsx 도 사용 예정입니다.
다운 하실 분들은 아래 링크를 클릭하시면 됩니다.
(sample_1, sample_2, code_master 순)
https://drive.google.com/file/d/1AWo8p8CUnu5VOcNqNdAkiZFni2s66K_y/view?usp=sharing
https://drive.google.com/file/d/1zpSa2UYorx9E0ge5hNfM27tmbahX7heb/view?usp=sharing
https://drive.google.com/file/d/1qZM5vhui7HUCYvZAWiTfTPLJ0GHxNYqW/view?usp=sharing
(5) 데이터 통합하기- 옆으로 통합하기 (merge)
예제5-1: left 조건으로 옆으로 통합하기
예제 5-1 에서 사용하는 데이터는 sample_1.xlsx와 sample_codemaster.xlsx 인데요
sample_1은 앞선 포스팅에서와 마찬가지로 저 조건에 해당하는 부분을 사용할 예정입니다.
또한 앞서 추가한것과 같이 기존 데이터에서 기준년월 데이터가 추가된 데이터를 사용합니다.
데이터를 옆으로 통합할 때에는 pd.merge()함수를 이용합니다.
left =sample_1 은 통합할 때 왼쪽에 위치할 테이블이 sample_1 이다.
right=code_master 은 통합할 때 오른쪽에 위치할 테이블이 code_master 이다.
how='left' 는 왼쪽 테이블(sample_1) 을 기준으로 두 테이블을 통합한다.
left_on='국적코드' , right_on='국적코드' 는 각 테이블의 기준이 국적코드라는 의미입니다.
left 조건으로 통합을 하게 되면 왼쪽 테이블을 기준으로 통합되기 때문에 code_master 의 국적코드에 매칭되는 값 (A31) 이 없는 경우에는 NAN으로 결과가 출력됩니다.
*특정 코드가 국적코드표에 존재하지 않는 이유는 여러가지가 있을 수 있다고 합니다.
단순히 잘못 입력이 되었을 수도 있으며 아직 반영이 안된 값일 수도 있습니다.
따라서 실제 업무에서 이런 경우가 발생한다면 사용자가 데이터를 사용할지 말지를 결정해야 합니다.
예제5-2: inner 조건으로 옆으로 통합하기
예제 5-1에서는 왼쪽 테이블을 기준으로 두 테이블을 통합했다면 (how='left')
예제 5-2 에서는 how='inner' 을 사용해보겠습니다. 이 조건을 사용해주면 두 테이블의 기준 칼럼의 값이
서로 일치하는 경우에만 데이터를 통합하는 옵션입니다.
두 테이블의 기준 칼럼 값이 일치하지 않았던 A31을 제외한 나머지 값들이 출력된 것을 확인할 수 있습니다.
(6) 데이터 통합- 아래로 통합하기 (append)
예제6-1. sample_1_code 와 sample_2_code 준비하기
저희가 통합할 때 사용할 데이터는 sample_1_code 와 sample_2_code 입니다.
그 전에 두 데이터를 만들어줘야하는데요
sample_1_code는 예제5_1에서 만든 데이터이고 sample_2_code도 sample_1_code 만들듯이 만들어줍니다. (기준년월 칼럼생성 & codemaster 자료와 옆으로 통합)
*데이터를 아래로 통합하기 위해서는 칼럼 순서가 동일해야합니다.
예제 6-2: 데이터 아래로 통합하기
append()함수를 이용해 sample_1_code의 칼럼을 기준으로 sample_2_code 데이터를 통합했습니다. 이때 ignore_index=True 인자를 지정하는 것이 좋은데요
(7) 데이터 저장하기
데이터를 저장할 때 index=False 를 인자로 지정하게 되면
엑셀 파일로 저장할 때 index 번호를 제외하고 저장을 할 수 있습니다.
(8) 데이터 집계하기 pivot_table
엑셀에서 데이터를 다루면서 가장 많이 활용하는 기능 중 하나가 바로 피벗테이블 기능인데요
이를 판다스를 이용해 파이썬에서 사용하는 방법을 배워보도록 하겠습니다.
피벗테이블이란 기존 데이터의 칼럼을 재구성해서 데이터에 대한 통계를 한 눈에 파악할 수 있게 정리한 표를 의미합니다. 예를 들어 "데이터를 연령별로 추출하기" 등과 같이 특정 조건에 따라 데이터를 집계할 때 유용하게 사용되는 기능입니다.
예제 8-1: 피벗 테이블 함수 활용1-국적과 기준년월에 따라 입국객수의 평균값 추출
예제 8-2: 피벗 테이블 함수 활용2-국적에 따른 최대 입국 객수
이번 예제에서는 국적을 기준으로 최대 입국객수를 알아보려고 합니다.
입국객수를 알아보려고 하기 때문에 -> value 에는 입국객수 설정을
예제 8-1과 달리 이번에는 기준이 국적 하나이기 때문에 -> index 에만 국적 설정을 해주었습니다.
(index를 생략하고 columns에 국적 설정을 해줘도 무관합니다. 보통 index를 많이 쓰는것 같아요)
최댓값을 구하기 때문에 -> aggfunc에는 max 를 설정해주었습니다.
오늘은 이렇게 데이터 선택하기에 이어서 데이터 통합하기, 저장하기, 집계하기를 공부해보았습니다. 다음 글에서는 웹 크롤링 기초를 공부할 예정입니다. 감사합니다 :)
훌륭합니다.
답글삭제