파이썬으로 학력과 임금 간의 관계를 쉽게 플롯

안녕하세요, entershare의 오모리입니다.

대학 때 정말 조금만 Python을 만지기도 하고 있었지만, 최근에는 Ruby와 PHP밖에 만지지 않았다고 생각합니다.
이번에는 조금만 matplotlib를 사용하여 그래프를 그려보고 싶습니다.
단순히 데이터를 플롯하고 있기 때문에 입문이라고 생각하십시오.

또 이번 Jupyter Notebook을 사용하고 있습니다.
아래의 Install을 보면 Anaconda와 pip에서의 설치가 가능한 것 같습니다만, Anaconda를 사용하기 쉽고 공식 사이트도 추천하고 있는 것 같습니다.
htps : // / 쥬 py r. rg/

그럼 가자.

필요한 모듈 설치



먼저 필요한 모듈을 가져옵니다.
이번에는 그래프를 그리는 데 필요한 matplotlib과 수치 계산을 간단하게 해주는 numpy를 가져옵니다.
# こう書くことでjupyter notebookの中でmatplotlibをいい感じに描画してくれる
%matplotlib inline
# matplotlibはグラフなどの描画モジュール
import matplotlib.pyplot as plt
# numpyは数値計算を効率的に行うためのモジュール
import numpy as np

오로지 숫자를 넣어



후에는 플롯하기 전에 오로지 수치를 넣어 갑니다.
numpy 배열을 사용하면 matplotlib로 쉽게 그릴 수 있습니다.

세대(generations)를 X축, 전세대(average_data), 중학 졸업 후 취직(junior_high), 고교 졸업 후 취직(high_school), 단대·고전 졸업 후 취직(short_university), 대학 졸업 후 취직(univercity)의 각각의 평균 수입을 Y축에 그릴 예정입니다.

또한 사용한 데이터는 후생노동성의 2018년 임금 구조 기본 통계 조사입니다.
generations = np.array([ 
  '20-24',
  '25-29',
  '30-34',
  '35-39',
  '40-44',
  '45-49',
  '50-54',
  '55-59',
  '60-64',
  '65-69',
  '70-'
])

average_data = np.array([
  209.7,
  240.3,
  273.5,
  301.7,
  327.4,
  352.4,
  373.8,
  370.3,
  278.4,
  245.3,
  243.3

])

junior_high = np.array([
  197.1,
  217.4,
  237.0,
  256.9,
  271.4,
  285.7,
  288.8,
  292.1,
  227.2,
  206.6,
  199.8
])

high_school = np.array([
  195.5,
  217.9,
  240.0,
  260.2,
  281.3,
  296.4,
  309.2,
  310.8,
  237.1,
  214.4,
  209.3
])

short_university = np.array([
  207.0,
  229.5,
  252.8,
  273.5,
  296.0,
  320.4,
  330.5,
  325.8,
  267.8,
  250.0,
  261.0
])

university = np.array([
  226.9,
  257.2,
  306.8,
  355.1,
  405.3,
  462.2,
  513.2,
  505.0,
  375.2,
  372.0,
  443.0
])

그래프 플롯



마지막으로 그래프를 플롯합니다.
처음 세 줄은 제목, X축 레이블, Y축 레이블을 설정합니다.

그런 다음 plt.plot()를 사용하여 그래프를 그립니다.
첫 번째 인수는 X 축 데이터, 두 번째 인수는 Y 축 데이터, 세 번째 인수는 그래프 레이블입니다.
plt.grid()를 사용하여 그릿을 표시할 수도 있습니다.

또한 plt.legend()에서 범례 (그래프 레이블)를 표시 할 수 있습니다.
인수에 loc = 'upper left' 와 같이 건네주는 것으로 위치의 지정도 가능합니다.
plt.title('education and income')
plt.xlabel('age')
plt.ylabel('income')

plt.plot(generations, average_data, label='all')
plt.plot(generations, university, label='univercity')
plt.plot(generations, junior_high, label='junior_highschool')
plt.plot(generations, short_university, label='short_university')
plt.plot(generations, high_school, label='high_school')
plt.grid()
plt.legend(loc = 'upper left')

위의 코드를 실행하면 다음과 같이 플롯됩니다.



예상대로의 결과라고 생각합니다만, 간단하게 경향을 읽어 봅시다.

역시 대학 졸업 후 취업의 경우의 수입은 평균으로 뛰어나 높은 것 같습니다.
전체적인 경향으로는 50-54세까지 임금은 상승세에 있으며, 55를 지나면 평평하게 접근합니다.
그리고 정년 후는 가쿡 떨어지는 패턴이 어느 경우에도 볼 수 있습니다.

또 눈에 띄는 것이 대학 졸업 후 취직한 사람의 수입이 60~69로 떨어지고, 그 후 70세를 지나면 뛰어오르는 것입니다.
단대·고전졸업 후 취업의 경우에도 이러한 경향은 다소 있습니다만, 이 2개 이외에서는 그러한 경향은 볼 수 없습니다.

이곳은 임금 조사이므로 연금 등은 포함되어 있지 않을 것입니다.
그래도 이런 결과가 나오는 것은 70세를 넘어도 현역시 일했던 지식과 경험을 살려 가치를 창출하고 있을 가능성이 하나.
혹은 원래 일하고 있는 사람이 적기 때문에, 높은 직책에 대해 있던 사람이 계속해서 일해, 평균 임금을 밀어 올리고 있다고 하는 것이 1개.

어느 쪽인가, 혹은 다른 대답이 있는지는 이 표로부터만으로는 모릅니다.
단지 고용되어 일하는 경우에는 평균적으로 이 그래프와 같이 임금이 변화하는 것을 머리에 넣고 인생설계를 할 필요가 있을 것입니다.

그럼 또!

전체 코드



마지막으로 전체 코드를 올려 둡니다.
# こう書くことでjupyter notebookの中でmatplotlibをいい感じに描画してくれる
%matplotlib inline
# matplotlibはグラフなどの描画モジュール
import matplotlib.pyplot as plt
# numpyは数値計算を効率的に行うためのモジュール
import numpy as np

generations = np.array([ 
  '20-24',
  '25-29',
  '30-34',
  '35-39',
  '40-44',
  '45-49',
  '50-54',
  '55-59',
  '60-64',
  '65-69',
  '70-'
])

average_data = np.array([
  209.7,
  240.3,
  273.5,
  301.7,
  327.4,
  352.4,
  373.8,
  370.3,
  278.4,
  245.3,
  243.3

])

university = np.array([
  226.9,
  257.2,
  306.8,
  355.1,
  405.3,
  462.2,
  513.2,
  505.0,
  375.2,
  372.0,
  443.0
])


junior_high = np.array([
  197.1,
  217.4,
  237.0,
  256.9,
  271.4,
  285.7,
  288.8,
  292.1,
  227.2,
  206.6,
  199.8
])

short_university = np.array([
  207.0,
  229.5,
  252.8,
  273.5,
  296.0,
  320.4,
  330.5,
  325.8,
  267.8,
  250.0,
  261.0
])

high_school = np.array([
  195.5,
  217.9,
  240.0,
  260.2,
  281.3,
  296.4,
  309.2,
  310.8,
  237.1,
  214.4,
  209.3
])

plt.title('education and income')
plt.xlabel('age')
plt.ylabel('income')

plt.plot(generations, average_data, label='all')
plt.plot(generations, university, label='univercity')
plt.plot(generations, junior_high, label='junior_highschool')
plt.plot(generations, short_university, label='short_university')
plt.plot(generations, high_school, label='high_school')
plt.grid()
plt.legend(loc = 'upper left')

좋은 웹페이지 즐겨찾기