본문 바로가기

Pandas/실전

판다스 - 미국 신생아 이름2 : 유행 분석, 이름 사용 경향

반응형

https://steadiness-193.tistory.com/85

 

판다스 - 신생아 이름 (전처리)

데이터 불러오기 신생아 이름에 관련된 데이터는 메모장에 쉼표로 구분되어 있으며 연도별로 파일이 구성되어 있다. 이렇게 2010년까지 있다. 2002년의 메모장을 살펴보면 이름,성별,출생 수 이렇

steadiness-193.tistory.com

위 포스팅에서

 

 

전처리한 데이터를 가져와 유행 분석을 해보자

 

 

이전 포스팅에서 만들어낸 top1000 데이터프레임

 

 

 

 

우선 연도와 이름에 대한 출생 수(합)를 피벗테이블로 만들면

 

 

 

이름이 너무 많으니(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

 

Numpy - searchsorted

https://numpy.org/doc/stable/reference/generated/numpy.searchsorted.html#numpy.searchsorted numpy.searchsorted — NumPy v1.19 Manual If ‘left’, the index of the first suitable location found is gi..

steadiness-193.tistory.com

 

 

 

 

 

배열의 색인은 0부터 시작하니 1을 더해주면 117이 나온다.

 

그 말은 2010년의 남아 이름이

 

 

해당 연도의 이름의 절반 비율을 차지할 때까지

 

총 117개의 이름이 나왔다는 것이다.

 

 

 

 

 

 

1900년에는 어떨까

 

 

25개의 이름이 절반의 비율을 차지했다.

 

즉 시간이 지날 수록 50%를 차지하는 이름 수가 다양해진다는 것이다.

 

 

 

 

 

위 내용을 함수로 정의해서 apply 해보자

 

 

 

그룹별 prop을 기준으로 내림차순 정렬한 다음, 

 

prop의 누적합을 구해서 0.5가 나오는 위치에 1을 더하는 함수

 

 

 

위 함수를 연도와 성별로 그룹화한 객체에 apply해보자

 

 

잘 나왔으나 그래프를 그리기 위해선 성별을 unstack해줄 필요가 있다.

 

 

 

 

 

 이제 위 데이터프레임을 시각화 하면

 

 

 

 

위와 같이 나온다.

 

여아의 이름은 남아의 이름보다 항상 다양했으며

 

시간이 흐를수록 더 다양해지고 있음을 확인할 수 있다.

 

 

반응형