-
03-2 중심경향의 지표 : 중앙값과 조건문 1데이터 분석/파이썬으로 배우는 데이터 분석을 위한 통계학 2022. 3. 14. 21:25
다음 살펴볼 집중경향의 지표는 중앙값와 최빈값이야. 먼저 중앙값부터 살펴볼까?
중앙값(median) 혹은 중앙치는 말 그대로 점수치들 중에서 제일 중앙에 있는 놈을 뜻 해. 다섯 명의 시험 점수를 정렬했을 때 중앙에 위치한 사람의 점수가 중앙치가 돼. 쉽지? 예를 들면 정렬된 점수치들이 '1, 3, 5, 7, 9'와 같다면 중앙에 있는 5점이 이 점수치들의 중앙값이 되는거야.
중앙값이 위치한 곳은 전체 점수치의 개수에서 1을 더한 다음 2로 나누어주면 쉽게 구할 수 있어. 5개의 점수가 있다면 5에서 1을 더한 6을 구한 후 2로 나눠주면 돼. 3이 나오지? 세 번째 위치한 점수치가 중앙값이는 뜻이야. 전체 점수치의 개수를 N이라고 했을 때 좀 더 간단하게 수식으로 나타내면,
(N이 홀수일 때) 중앙값이 위치한 순서 : (N+1) / 2
하지만 점수치가 짝수개라면?!
여섯 명의 시험점수를 정렬했을 땐 세 번째 점수와 네 번째 점수 사이가 중앙이 될거야. 그럼 세 번째 점수와 네 번째 점수 중에서 어떤 것을 중앙값으로 하면 좋을까? 대~충~ 하나를 고를까? 안돼! 중앙에 위치한 두 값들을 가지고 새로운 중앙값을 만들어야돼! 평균을 이용해서 말야!
점수치의 개수가 짝수일 땐 중앙값이 두 개 일수밖에 없어. 그럴 땐 이 두 값의 평균을 중앙값으로 정하면 돼. 만약 정렬된 점수치들이 '2, 4, 6, 8'과 같다면 중앙에 위치한 두 값인 4와 6의 평균인 5를 중앙값으로 하는거지! 참 쉽지?
그럼 점수치의 개수가 짝수일 때의 수식을 생각해 볼까? 먼저 중앙에 위치한 두 값의 순서를 구해야 돼. 하나는 전체 개수에서 2를 나눠주면 되고 다른 하나는 전체 개수에서 1을 더한 후 2로 나눠 주면 돼. 그리고 그 둘의 평균을 구하기만 하면 되지! 점수치의 전체 개수를 N이라 했을 때,
(N이 짝수일 때) 중앙값이 위치한 순서들 : N/2와 (N+1)/2
로 표현할 수 있겠어.
이제 중앙값을 구해낼 수 있겠지?
이걸!
파이썬 이용하해서 구하면! 엄청 쉽게 중앙값을 구할 수 있어!
같이 해 볼까?
-
파이썬 코드를 사용해서 중앙값을 구해볼건데, 그 전에 '조건문(if statement)'에 대해 배울거야.
조건문에서는 어떠한 가정(if)을 조건(Condition)으로 놓기 때문에 'if 문'이라고도 해.
(파이썬이 아닌 다른 프로그래밍 언어에서는 '스위치 문(Switch-case statement)'이라고 하는 조건문이 있어. 하지만 파이썬에는 이것이 없으니 '조건문'이라고 하면 'if 문'을 떠올려도 괜찮아!)조건문은 어떤 조건이 참인지 거짓인지 판별해 주기만 하면 돼. 간단하지?
'그는 학성이니?' 라고 물었을 때 학성이가 맞다면 '참'이 되는 것이고 그렇지 않다면 '거짓'이 되는거야.중요한 것은 '학성이'인가 아닌가지.. 조건문에서는 '그'가 '학성이'인지 아닌지만 중요해. '그'가 '학성이'라면 '커트 코베인'이나 '미하엘 발락' 혹은 '무라카미 하루키'는 모두 다 같은 거짓으로 취급되는 것이지.
참 (true) 거짓 (false) 학성이 커트 코베인, 미하엘 발락, 무라카미 하루키 참과 거짓을 이분법적으로 나누지 말고, 참은 참이지만 참이 아닌 것 들은 거짓이라고 생각하면 편해.
흰색은 흰색이지만 흰색이 아닌 것이 꼭 검은색이지는 않잖아? 그것과 같아.조건문을 판별하는 것은 컴퓨터 과학 분야에서만 사용되는 것은 아니야.
우리는 일상생활에서도 항상 판별을 하고 있으니까. 샤워를 할 때 물의 온도가 적당한지, 외출 할 때 우산을 가지고 나갈 것인지, 짜장면을 먹을 것인지, 짬뽕을 먹을 것인지..매 순간 판별하고 선택하는 것이 사람의 삶이라고도 할 수 있을 정도로 조건문과 사람은 밀접한 관계에 있어. 인생은 B와 D사이의 C(Chicken?)이라고도 하잖아.
우리의 일상 중에서 자주 만나게 되는 '횡단보도 신호등'을 통해 조건문을 배워볼게.
당연히 신호등의 불이 빨간색이라면 횡단보도를 건너면 안돼. 당연하지?
이 경우 신호등이 빨간불이라는 조건(Condition)을 만들 수 있어. 신호등이 빨간불이라고 가정(IF)한 것이지. 실제로 신호등의 불이 빨간불이 맞다면 참(True)가 되겠지? 빨간불이라면 횡단보도를 건널 수 없어. 기다려야지.반대로 신호등이 빨간불이 아니라면 조건은 거짓(False)이 될 거야. 횡단보도의 보행자 신호등은 빨간불이 아니면 초록불 밖에 없기 때문에 조건이 거짓인 경우에는 실제 신호등의 불은 초록불이 되겠지. 그치? 횡단보도를 건널 수 있게 되었어!
하지만 신호등의 불이 초록불이라고 해서 무조건 건널 수 있는 것은 아니야. 도로교통법에서는 횡단보도가 초록불이라고 해도 깜빡이고 있는 경우에는 건널 수 없다고 되어 있거든! (도로교통법시행규칙 제6조 제2항 별표 2(신호기가 표시하는 신호의 종류 및 신호의 뜻)에 의하면 보행신호등 녹색등화 점멸(깜빡일 때)의 경우 '보행자는 횡단을 시작하여서는 아니 되고'...) 물론 현실에서 모든 법규가 그대로 지켜지는 것은 아니지만.. 하핫!
그래서 이번에는 '초록불이 깜빡이는가?'라는 조건을 붙일 수 있을 거야. 이 조건이 참이라면 횡단보도를 건너면 안 되는 것이고, 거짓이라면 초록불이 깜빡이지 않고 계속 켜져 있는 상태이기 때문에 횡단보도를 건널 수 있는 것이지.
글로 표현하니 엄청 길고 복잡해 보여. 그림으로 볼까?
글로는 엄청 길게 써 놨는데 그림으로 보니 엄청 쉽네. 뭐 하러 내가 글을 쓰고 있나 몰라..
이 그림이 조건문의 핵심이야. 조건문의 조건을 판별해서 참일 때와 거짓일 때로 나누는 것. 참 쉽지?이제 조건문을 파이썬에서 어떻게 사용할 수 있는지 살펴볼게!
조건문 사용하기 위해서는 'if'라는 '예약어 (豫約語, Reserved word [리저브드 워드])'를 사용하면 돼. 예약어란, '이건 이렇게 하자!' 라고 미리 예약해 놓은 단어들을 말해. 파이썬3에서는 if를 포함해서 총 33개의 예약어가 있어. 물론 아직은 다 알 필요도 없고 외울 필요도 없어. 그냥 그런가 보다 하고 넘어가면 돼. 단, 예약어와 내장 함수는 구분해 줄 필요가 있어. 지금도 구글링해 보면 내장 함수와 예약어를 혼동하여 잘 못 알려주는 글들이 많던데.. 그럴 땐 파이썬 공식 문서 (https://docs.python.org/3/library/functions.html)등을 참고하면 좋아. 'print()'와 같은 놈들은 예약어가 아니라 내장 함수야.
파이썬의 예약어들을 꼭 알아야 하는 이유가 있어. 파이썬에서는 예약어나 내장 함수를 변수명으로 사용할 수 없기 때문이야! 우리가 배웠던 'print()'와 같은 내장 함수나 'and'와 같은 예약어는 변수 이름으로 사용할 수 없어.
아래의 코드들을 볼까요?
위의 코드들을 실행시켜보면 오류가 나타나는 것을 볼 수 있어. 예약어나 내장 함수를 변수명으로 사용했기 때문이지.
상식적으로, 내장 함수나 예약어를 변수명으로 사용하면 너무 헷갈리지 않겠어? 'print'라는 이름의 변수를 'print'해라 라니.. 그래서 변수명에 내장 함수나 예약어를 사용하지 못하게 해서 헷갈리는 것을 막아주는거야. 이 참에 내장 함수들과 예약어들을 몇 개만 보고 갈까?내장 함수 예약어 max(), print(), input(), int(), float() and, or, not, True, False, if 이런것들을 변수명으로 사용할 수 없다는 것을 기억해야 돼! 앞으로 배우게 될 내장 함수들과 예악어들도 마찬가지로 변수명으로 사용할 수 없으니까!
그런데.. 내가 변수명으로 사용하려는 것이 내장 함수나 예악어인지 어떻게 알 수 있을까? 아직 배우지 않은 것들 중에서 내가 사용하고 싶은 변수명이 있을수도 있잖아?
그럴 땐 에디터의 힘을 빌리거나 구글링을 통해 내장 함수와 예약어를 전부 확인하는 수 밖에는 없어! 하핫!!보통 파이썬 코드를 작성할 수 있는 IDE 혹은 IDLE등에서는 내장 함수와 예약어를 글자 색깔로 구분해서 보여주기 때문에 내가 사용하려는 변수명이 내장 함수나 예약어라는 것을 알 수 있어. 아래 코드의 변수명이 어떤 색깔로 되어있는지 잘 볼래?
'number'라는 변수명은 내장 함수나 예약어로 사용되지 않기 때문에 그냥 표현되고 있어.
하지만 곧 배우게 될 'else'라는 것은 예약어이기 때문에 변수명으로 사용할 수 없지! 그래서 'number'와 달리 색으로 표현된 것을 볼 수 있어.
만약 메모장처럼 글자 색깔이 다 까만색으로 표현되는 에디터를 사용한다면 어쩔 수 없이 내장 함수와 예약어들을 찾아서 외우고 있어야 해. 어려운 일이지.if 문을 설명하다가 여기까지 와버렸네! 본론으로 돌아가서 조건문을 파이썬에서 어떻게 사용하는지 살펴볼까?
if 문은
if 조건:
과 같은 형태로 사용할 수 있어. if 다음에 조건을 넣어주면 조건이 참인지 거짓인지 판별할 준비가 되는 것이지. 조건문의 조건은 참이나 거짓이 될 수 있는 것들이 오면 돼. 값을 비교하거나 'True' 혹은 'False'가 될 수 있는 것들말야.
예약어 의미 예시 if 조건: 조건이 참(True)인지 거짓(False)인지 판별 if 3 < 7: 이라는 조건문은 3이 7보다 작기 때문에 참(True) 그리고 if 문은 조건이 참일 때 실행될 동작을 정해 줄 수 있어. 아래의 코드를 실행해 봐.
'조건이 참!' 이라는 문구가 출력된 것을 볼수 있어. 3은 7보다 작기 때문이지. 어렵지 않지?
조건이 참일 때 실행될 동작은 ':'에서 줄바꿈을 한 다음 키보드의 'Tab'키를 한 번 눌러서 들여 쓰기를 한 다음 적어주면 돼. 보통 프로그래밍 언어를 배울 때 사용하는 에디터에서는 자동으로 들여 쓰기를 해주기 그때는 'Tab'키를 눌러서 들여 쓰기를 하지 않아도 돼!
그렇다면 조건이 거짓일 땐 어떻게 될까? 아래의 코드를 실행시켜 봐!
7은 3보다 작은 숫자가 아니기 때문에 이 조건은 거짓이야. 따라서 조건이 참일 때 실행되어야 하는 'print(조건이 참!)'이 동작하지 않지. 그래서 아무것도 출력되지 않았어. 간단하지?
조건문의 조건을 꼭 비교 연산(부등호)으로 할 필요는 없어. 아래와 같이 'True'나 'False'가 될 수 있는 것들을 다 가능해!
'True'는 당연히 참을 나타내기 때문에 '조건이 참!'이 출력되는 것을 볼 수 있어. '1'도 마찬가지로 참을 나타내기 때문에 '조건이 참!'이 출력되고 있지.
하지만 반대로
위와 같은 조건들, 'False'나 '0'은 거짓을 나타내고 있기 때문에 동작하지 않을 거야. 참 쉽지?
이제 조건문에 대해 알았으니 중앙값을 구해볼까?
'데이터 분석 > 파이썬으로 배우는 데이터 분석을 위한 통계학' 카테고리의 다른 글
03-4 중심경향의 지표 : 최빈값 (0) 2022.03.16 03-3 중심경향의 지표 : 중앙값과 조건문 2 (0) 2022.03.14 03-1 중심경향의 지표 : 평균 (0) 2022.03.14 02-2 도표와 변산성 : 분포들은 어떻게 다른가? (0) 2022.03.14 02-1 분포의 특징 : 빈도분포와 상대빈도분포 (0) 2022.03.14