데이터 불러오기
신생아 이름에 관련된 데이터는 메모장에 쉼표로 구분되어 있으며
연도별로 파일이 구성되어 있다.
이렇게 2010년까지 있다.
2002년의 메모장을 살펴보면
이름,성별,출생 수
이렇게 되어있다.
데이터를 불러와 합치기 위해 glob를 불러온다.
babynames 폴더에 있는 모든 경로를 paths에 담아온 뒤
파일명에 있는 연도수를 이용해서
데이터프레임을 df_list에 차곡히 쌓은 다음
pd.concat을 이용하여 names라는 최종 데이터프레임을 만든다.
피벗 테이블로 살펴보기
연도와 성별에 따른 출생 수를 볼 수 있다.
이를 시각화해서 보면
1940년대부턴 남아의 출생 수가 계속 더 높아짐을 확인할 수 있다.
각 연도/성별별 이름이, 연도/성별별 전체 출생수에서 차지하는 비율 확인
우선 연도와 성별별로 그룹화를 시켜 grouped변수에 담는다.
쉬운 예시를 들기 위해 get_group 메서드를 이용해
1880년대의 여아 이름만을 살펴보자
1880년대 여아는 총 90993명이 태어났고
그 중 Mary라는 이름이 7065명이라는 것이다.
저 총 합 값으로 births 컬럼을 나누면 prop을 얻을 수 있다.
이를 이제 컬럼으로 추가
0.77이라는 것은
100명의 아기 중
7.7명의 아기의 이름이 Mary로 같다는 것이다.
이제 전체 Groupby 객체에 prop 컬럼을 추가해보자
apply를 이용해 prop이 담긴 컬럼을 만들고 (transform 이용해도 같은 결과)
이 prop_col을 다시 기존 데이터프레임에 컬럼으로 추가한다.
그룹 관련 연산을 수행할 땐 모든 그룹에서 prop 컬럼의 합이 1이 맞는지
새너티 테스트를 하는 것이 좋다.
prop이 가장 높은 이름은
1880-1886년 동안엔 John과 William이 용호상박임을 볼 수 있다.
연도/ 성별에 따라 선호된 이름 1000개씩 추출
이 또한 그룹 연산이지만 get_group을 이용해
쉽게 살펴보자
연도/성별로 그룹핑한 grouped 객체에서
1880년대의 남자아이 데이터만 가져와 출생수 상위 1000행만 보자
이 작업을 이제 그룹 연산으로 하는 것이다.
위 데이터프레임은 멀티인덱스이니
reset_index와 기존 인덱스를 삭제해주면
연도/성별별 선호되는 출생 수 상위 1000개씩인, 이름의 데이터프레임을 볼 수 있다.
처음 1690784행에 비해 많이 줄어들었다.
이름 유행 분석 등은
다음 포스팅으로 연결!
'Pandas > 실전' 카테고리의 다른 글
판다스 - 미국 신생아 이름 : 마지막 글자의 변화 (0) | 2020.07.04 |
---|---|
판다스 - 미국 신생아 이름2 : 유행 분석, 이름 사용 경향 (0) | 2020.07.03 |
판다스 - 시간 범위 수정하고 데이터 밀어내기 : date_range, first_valid_index, shift (0) | 2020.07.01 |
판다스 - 은행의 파산 연도, 분기 : groupby, 시각화 (0) | 2020.06.30 |
판다스 - MoviesLens의 영화 평점 데이터 (0) | 2020.06.30 |