https://steadiness-193.tistory.com/85
위 포스팅에서
전처리한 데이터를 가져와 유행 분석을 해보자
우선 연도와 이름에 대한 출생 수(합)를 피벗테이블로 만들면
이름이 너무 많으니(6868 컬럼)
이 중에서 몇개의 이름만 뽑아,
(John, Harry, Mary, Marilyn)
그래프로 나타내면 아래와 같이 나온다.
위 4개의 이름은 유행 때는 반짝하다가
점점 인기가 사그라드는 것을 볼 수 있다.
다양한 이름을 사용하는 경향 측정하기
위에서 확인한 그래프의 감소 추세는 부모가 아이의 이름을 지을 때
흔한 이름을 기피한다고 해석할 수 있다.
top1000 데이터프레임에서
인기 있는 이름 1,000개가 '전체 출생 수에서 차지하는 비율'을
연도별/성별 그래프로 그려보자
간단한 예를 들어, 1880년대에 태어난 남자아이만 보면
1880년대의 남자 아이의 이름 중 상위 1000명의 이름 비율이 거의 1에 가깝다.
그 말은, 상위 1000개의 이름이 그 연도에 남자 아이의 이름을 거의 다 차지했다는 것이다.
2010년은 어떨까?
2010년의 상위 1000개의 이름의 비율이 0.84로 감소했다.
그 말은, 상위 1000개의 이름 말고도 다양한 이름을 사용하는 경향이 생겼다는 것이다.
이를 전체 피벗테이블로 보자
감소되는 경향이 보이지만
시각화로 확실하게 파악해보자
두 성별 모두 비율이 감소하지만
여아 이름의 비율이 더 큰 폭으로 감소했다.
그 말은 여아의 이름이 상대적으로 더 다양해지고 있다는 것이다.
인기 상위 이름순에서도 전체 출생 수의 50% 차지하는 이름 수
이 또한 prop컬럼을 이용하는데
누적합이 0.5가 되는 위치를 말한다.
우선 boys와 girls로 데이터프레임을 나눠놓자
2010년의 남아 이름에서
내림차순을 한 다음, prop컬럼의 누적합을 구한다.
이 누적합이 정렬된 상태에서 누계가 0.5가 되는 위치를 구한다.
(searchsorted 이용)
searchsorted는 아래 포스팅 참조
https://steadiness-193.tistory.com/87
배열의 색인은 0부터 시작하니 1을 더해주면 117이 나온다.
그 말은 2010년의 남아 이름이
해당 연도의 이름의 절반 비율을 차지할 때까지
총 117개의 이름이 나왔다는 것이다.
1900년에는 어떨까
25개의 이름이 절반의 비율을 차지했다.
즉 시간이 지날 수록 50%를 차지하는 이름 수가 다양해진다는 것이다.
위 내용을 함수로 정의해서 apply 해보자
그룹별 prop을 기준으로 내림차순 정렬한 다음,
prop의 누적합을 구해서 0.5가 나오는 위치에 1을 더하는 함수
위 함수를 연도와 성별로 그룹화한 객체에 apply해보자
잘 나왔으나 그래프를 그리기 위해선 성별을 unstack해줄 필요가 있다.
이제 위 데이터프레임을 시각화 하면
위와 같이 나온다.
여아의 이름은 남아의 이름보다 항상 다양했으며
시간이 흐를수록 더 다양해지고 있음을 확인할 수 있다.
'Pandas > 실전' 카테고리의 다른 글
판다스 - 미국 신생아 이름 : 이름의 성별 변화 (0) | 2020.07.05 |
---|---|
판다스 - 미국 신생아 이름 : 마지막 글자의 변화 (0) | 2020.07.04 |
판다스 - 미국 신생아 이름 : 전처리 (0) | 2020.07.02 |
판다스 - 시간 범위 수정하고 데이터 밀어내기 : date_range, first_valid_index, shift (0) | 2020.07.01 |
판다스 - 은행의 파산 연도, 분기 : groupby, 시각화 (0) | 2020.06.30 |