03-1 변하는 수, ‘변수’ 이해하기
변수 | 상수 | ||
소득 | 성별 | 학점 | 국적 |
1,000만 원 | 남자 | 3.8 | 대한민국 |
2,000만 원 | 남자 | 4.2 | 대한민국 |
3,000만 원 | 여자 | 2.6 | 대한민국 |
4,000만 원 | 여자 | 4.5 | 대한민국 |
변수는 ‘변하는 수’다
- 변수 : 다양한 값을 지닌 하나의 속성
- 데이터: 변수들의 덩어리
변수는 데이터 분석의 대상
- 데이터 분석: 변수간에 어떤 관계가 있는지 파악하는 작업
- 데이터를 이용하면 성별에 따라 소득과 학점에 차이가 있는지, 학점과 소득은 어떤 관계가 있는지 분석할 수 있음
상수는 분석할 게 없다
- 상수: 하나의 값으로만 되어 있는 속성
- ex) 국적은 다른 속성과 달리 ‘대한민국’이라는 고정된 값을 지님
- 상수는 변수와 달리 분석 대상이 될 수 없음
- (이 데이터는 모든 사람의 국적이 같으므로 국적에 따른 소득 차이나 남녀 비율을 분석할 수 없음)
변수명 정하기 규칙
- 실제 분석에서는 “score”, “sex”, “grade”처럼 알아보기 쉽고 잘 기억되도록 의미를 담아 이름을 정함
- 변수명은 문자, 숫자, 언더바(“_”)을 조합해 정할 수 있음
- 단, 반드시 문자로 시작해야함
- 변수명은 한글로 정해도 되지만, 간혹 오류가 날 때가 있으니 영문으로 정하길 권장함
- 또한 대소문자를 구분하므로 헷갈리지 않도록 모든 변수를 소문자로 만드는 습관을 들이는게 좋음
03-2 마술 상자 같은 ‘함수’ 이해하기
데이터 분석은 함수로 시작해 함수로 끝난다
- 데이터 분석은 ‘함수를 이용해서 변수를 조작하는 일’이라고 할 수 있음
- 분석 작업은 대부분 함수를 다루는 것으로 시작해 함수를 다루는 것으로 끝남
- 데이터 분석을 공부하는 것은 함수의 기능과 조작 방법을 익히는 과정임
- 다양한 함수를 능숙하게 다룰수 있도록 데이터를 의도한 대로 분석할 수 있음
함수는 마법 상자 같은 기능을 한다
- 마술사가 상자에 물을 한컵 넣고 뚜껑을 닫음. 주문을 외우고 뚜껑을 열었더니 비둘기가 튀어나옴. 상자가 얻던 작용을 해서 물을 비둘기로 바꾼 것임. 함수는 마법 상자 같은 기능을 함
- 함수에 값을 넣으면 특정한 기능을 수행해 처음과 다른 값으로 만듦
- 함수에 3개의 숫자 1, 2, 3을 넣었더니 2가 나왔음. 함수 안에서 무슨일이 일어난 것일까요? 함수는 평균을 구하는 기능을 했음. 숫자를 모두 더한 다음 개수 3으로 나눠 2를 출한 것
>> 예제 함수: sum(), max(), min()
03-3 함수 꾸러미, ‘패키지’ 이해하기
패키지란?
- 앞에서 함수를 특정한 기능을 하는 상자에 비휴했음. ‘패키지(packages)’는 이런 상자가 여러 개 들어 있는 꾸러미에 비유할 수 있음
패키지에는 다양한 함수가 들어 있다
- 패키지에는 다양한 함수가 들어 있음. 예를 들어 그래프를 만들 때 많이 사용하는 패키지인 “seaborn”에는 “scatterplot()”, “barplot()”, “lineplot()” 등 수십 가지 그래프 관련 함수가 들어 있음. “seaborn”패키지를 설치하고 불러오면 이 함수들을 이용할 수 있게 됨
스마트폰에 앱을 깔 듯 입맛대로 골라 설치할 수 있다
- 파이썬의 가장 큰 장점은 그래프를 만들고, 텍스트 데이터를 분석하고, 머신러닝 모델을 구현하는 등 다양한 패키지가 있다는 점임. 전 세계의 파이썬 사용자들이 패키지를 만들어 온라인에 공개하고 있음. 마치 스마트폰에 입맛에 맞는 앱을 깔 듯, 누구든지 무료로 패키지를 설치해 사용할 수 있음.
패키지 활용하기
- 패키지를 설치하고 사용하는 방법을 알아보겠음. 패키지를 사용하려면 패키지를 설치한 다음 로드해야함. 로드(load)는 패키지를 사용할 수 있도록 불러들이는 작업을 의미함
- 패키지는 한 번만 설치하면 되지만 로드하는 작업은 JupyterLab을 새로 시작할 때마다 반복해야 함. 패키지를 로드하지 않은 상태에서 패키지의 함수를 실행하면 함수를 사용할 수 없다는 에러 메시지가 출력됨
아나콘다에는 주요 패키지가 대부분 들어 있다
- 아나콘다에는 데이터 분석에 필요한 주요 패키지가 대부분 들어 있음 아나콘다를 이용해 파이썬을 설치했다면 수백 가지 패키지를 함께 설치한 셈임. 사용자가 적거나 최근에 개발되어 아나콘다에 포함되지 않은 패키지를 사용할 때가 아니라면 설치 과정을 생략하고 바로 패키지를 로드하여 함수를 사용하면 됨
- (아나콘다에 들어 있는 패키지 목록: bit.ly/easypy_31)
패키지 로드하기
- 패키지를 설치하는 방법은 뒤에서 다루기로 하고, 패키지를 로드하는 방법을 먼저 알아보겠음. 패키지의 함수를 사용하려면 우선 패키지를 로드해야함. 패키지를 로드하려면 “import” 뒤에 패키지 이름을 입력하고 실행하면 됨. 그래프를 만들 때 많이 사용하는 “seaborn” 패키지를 로드해보겠음
import seaborn
[Do it! 실습] 패키지 함수 사용하기
- 패키지를 로드하고 나면 패키지에 들어 있는 다양한 함수를 이용할 수 있음. “seaborn” 패키지를 로드했으나 이제 그래프를 만드는 함수들을 이용할 수 있는 상태가 됐음.
- “seaborn” 패키지의 “countplot()” 함수를 이용해 빈도 막대 그래프를 만들어 보겠음. 빈도 막대 그래프는 값의 개수(빈도)를 막대의 길이로 표현함. 먼저 여러 개의 문자로 구성된 변수 “var”을 만들어 보겠음
var = [ ‘a’, ‘a’, ‘b’, ‘c’ ]
var
# output >> [ ‘a’, ‘a’, ‘b’, ‘c’ ]
- “countplot()”을 이용해 빈도 막대 그래프를 만들어 보겠음. 패키지의 함수를 이용할 때는 “seaborn.countplot()”처럼 패키지명 귀에 점(“.”)을 찍고 함수명을 입력하면 됨. “countplot()”에 “x”를 입력하고 “var”를 지정하겠음. 이렇게 하면 “var”의 값으로 x축을 구성해 빈도 막대 그래프를 만듦.
seaborn.countplot( x = var )
설치하거나 로드하지 않고 사용하는 내장함수
- 앞에서 다룬 “sum()”, “max()”. “min()” 같은 함수는 파이썬에 기본으로 내장되어 있어서 따로 설치하거나 로드하지 않아도 사용할 수 있음. 즉, 함수에는 패키지를 설치하고 로드해야 사용할 수 있는 ‘패키지 함수’와 파이썬에 내장되어 있어서 설치하거나 로드하지 않고 바로 사용하는 내장 함수(built-in function)이 있음
패키지 약어 활용하기
- 패키지 함수를 이용하려면 함수 이름 앞에 패키지 이름을 항상 입력해야 해서 번거로움. 패키지 약어를 지정해두면 함수를 사용할 때 패키지 이름 대신 약어를 활용해 코드를 짧게 줄일 수 있어 편리함.
- 패키지 약어를 지정하려면 패키지를 로드하는 코드 뒤에 “as”와 약어를 입력하면 됨. 다음 코드를 실행하면 “seaborn” 패키지의 약어를 “sns”로 지정함
import seaborn as sns
- 이제 “seaboen” 패키지 함수를 사용할 때 패키지 이름 위치에 “seaborn” 대신 “sns”를 입력하면 됨
sns.countplot( x = var )
[Do it! 실습] seaborn의 titanic 데이터로 그래프 만들기
- 패키지에는 함수의 기능을 테스트할 수 있는 예제 데이터가 들어있음. “seaborn” 패키지에 들어 있는 “titanic” 데이터를 이용해 그래프를 만들어 보겠음. “titanic” 데이터는 1912년, 영국 사우샘프턴에서 출발해 미국 뉴욕으로 항해하다가 침몰한 여객선 타이타닉호의 승객 정보가 담겨 있음.
“seaborn”의 “load_dataset()”로 “titanic” 데이터 불러오기
- “seaborn” 패키지의 “dataload_dataset()”을 이용하면 “seaborn” 패키지에 들어 있는 데이터를 불러 올 수 있음. “dataload_dataset()”에 “titanic”을 입력해 “titanic” 데이터를 불러온 다음 “df”에 할당하겠음
df = sns.dataload_dataset('titanic')
df
함수의 다양한 기능 이용하기
- 앞에서 “countplot()”으로 빈도 막대 그래프를 만들 때 “x = var”을 입력해 x축을 “var”의 값으로 구성하도록 설정했음. “countplot()”에 입력한 “x”는 빈도 막대 그래프의 x축을 정하는 기능을 함. 이처럼 함수의 옵션을 설정하는 명령어를 파라미터(parameter) 또는 매개변수하고 함
- 함수에는 저마다 기능이 다른 파라미터가 들어 있고, 이를 조정해서 원하는 결과를 얻을 수 있음. 따라서 어떤 파라미터가 있는지 알고 있어야 함수를 자유자재로 활용할 수 있음
- 파라미터 설정을 바꿔 보면서 “countplot()”의 기능이 어떻게 달라지는지 살펴보겠음. “countplot()”의 “data” 파라미터에 “df”를 지정하고, 그래프의 x축을 결정하는 “x” 파라미터에 ‘sex’를 지정해 ‘성별 빈도 막대 그래프’를 만들어 보겠음. “sex”는 탑승객의 성별을 나타낸 변수임.
sns.countplot(data = df, x = 'sex')
- “countplot()”의 파라미터를 바꿔가며 코드를 실행해 보겠음. 파라미터를 바꿀 때마다 그래프 형태가 어떻게 달라지는지 확인해보기 바람. 다음 코드에서 “class”는 선실 등급, “alive”는 생존 여부를 나타낸 변수임. “hue”는 변수의 항목별로 막대의 색을 다르게 표현하는 파라미터임.
sns.countplot(data=df, x='class') #x축 class
sns.countplot(data=df, x='class', hue='alive') #x축 class, alive별 색 표현
sns.countplot(data=df, y='class', hue='alive') #y축 class, alive별 색 표현
{알아두면 좋아요}
함수 사용법이 궁금할 땐 Help 함수를 활용해 보세요
- 함수를 사용하다 보면 파라미터를 지정하는 방식 등 문법이 기억나지 않거나 헷갈릴 때가 있음. 이럴 때 함수명 앞 또는 뒤에 물음표를 넣어 Help 함수를 실행하면 메뉴얼을 출력함. 메뉴얼에는 함수 소개, 파라미터 사용법, 예제 코드가 들어있음.
# sns.countplot() 매뉴얼 출력
sns.countplot?
모듈 알아 보기
- 어떤 패키지는 함수가 굉장히 많기 때문에 비슷한 함수끼리 묶어 몇 개의 모듈(module)로 나위어 있음. 패키지라는 큰 꾸러미는 비슷한 함수들을 널어둔 작은 꾸러미들이 들어 있다고 생각하면 됨
- 머신러닝 모델을 만들 때 사용하는 “sklearn” 패키지를 예로 들어 모듈을 사ᅟᅭᆼ하는 방법을 알아보겠음. “sklearn” 패키지에는 “metrics”, “tree”, “model_selection” 등 여러 모듈이 들어 있음. “metrics” 모듈에는 머신러닝 모델의 예측이 얼마나 정확한지 성능을 평가할 때 사용하는 “accuracy_score()” 함수가 들어 있음. “accuracy_score()”를 사용하려면 먼저 “metrics” 모듈을 로드해야 함. 패키지의 모듈을 불러오려면 “import sklearn.metrics”처럼 패키지를 로드하는 코드 뒤에 점을 찍고 모듈 이름을 입력하면 됨.
# sklearn 패키지의 metrics 모듈 로드하기
import sklearn.metrics
- 모듈에 들어있는 함수를 사용하려면 “패키지명.모듈명.함수명()”을 입력하면 됨
# sklearn 패키지의 accuracy_score() 사용하기
sklearn.metrics.accuracy_score()
(위 코드는 함수에 아무 값도 입력하지 않았기 때문에 ‘TypeError’ 메시지를 출력함. 여기서는 모듈을 활용하는 방법만 간단히 살펴보고 “sklearn” 패키지를 이용해 머신러닝 모델을 만드는 방법은 15장에서 자세히 다룸)
“모듈명.함수명()”으로 함수 사용하기
- 모듈의 함수를 사용할 때 매번 패키지명을 입력하는게 번거롭다면 “from 패키지명 import 모듈명”으로 모듈을 로드하면 됨. 모듈을 로드하면 함수를 사용할 때 “모듈명.함수명()”만 입력하면 됨.
# sklearn 패키지의 metrics 모듈 로드하기
from sklearn import metrics
metrics.accuracy_score()
“함수명()”으로 함수 이용하기
- 모듈명으로 입력하는 것도 번거롭다면 “from 패키지명.모듈명 import 함수명”으로 함수를 직접 로드하면 됨. 함수를 직접 로드하면 함수를 사용할 때 함수명만 입력하면 됨.
# sklearn 패키지의 metrics 모듈의 accuracy_score() 로드하기
from sklearn.metrics import accuracy_score()
accuracy_score()
- 함수를 지정해 로드하면 로드한 함수만 사용할 수 있고 모듈의 다른 함수는 사용할 수 없음. 모듈의 특정 함수만 자주 사용할 때는 함수를 지정해 로드하고, 모듈의 여러 함수를 함께 사용할 때는 모듈 전체를 로드하는게 편리함.
{알아두면 좋아요}
as로 약어 지정하기
- “import”로 로드하는 대상은 모두 “as”로 약어를 지정해 사용할 수 있음.
import sklearn.metrics as met
met.accuracy_score()
from sklearn import metrics as met
met.accuracy_score()
from sklearn.metrics import accuracy_score as accuracy
accuracy()
[Do it! 실습] 패키지 설치하기
데이터 분석을 하는 데 필요한 주요 패키지는 대부분 아나콘다를 설치할 때 함께 설치 되므로 따로 설치할 필요 없이 바로 로드하여 사용하면 됨. 하지만 아나콘다에 들어있지 않은 패키지를 사용하려면 우선 패키지를 직접 설치한 다음 로드해야함.
패키지 설치하기
- “PyDataset” 패키지를 설치해 보겠음. “PyDataset”을 이용하면 여러 가지 데이터 셋을 손쉽게 불러올 수 있음. 패키지를 설치하려면 아나콘다 프롬프트를 열어 “pip install 패키지명”을 실행하면 됨. “pip”는 파이썬 패키지를 설치하거나 관리할 때 사용하는 명령어임. 아나콘다 프롬프트에 다름과 같이 입력한 다음 를 눌러 실행함.
pip install pydataset
- 코드를 실행하면 파이썬 패키지 장소 PyPI(pypi.org)에서 패키지 관련 파일을 다운로드해 하드디스크에 설하지는 과정이 프롬프트에 출력됨. 패키지 설치를 완료하면 입력 대기 상태가 됨.
패키지 함수 사용하기
- 설치를 완료했으니 JupyterLab에서 패키지를 사용할 수 있도록 로드하겠음
import pydataset
- 이제 “pydataset” 패키지를 사용할 수 있는 상태가 됐음. “pydataset” 패키지에 들어 있는 데이터셋 목록을 출력해 보겠음
pydataset.data()
- 이번에는 “data()”에 ‘mtcars’를 입력해 자동차 32종의 정보를 담고 있는 “mtcars” 데이터셋을 불러오겠음.
df = pydataset.data('mtcars')
df
- 이처럼 아나콘다에 들어 있지 않은 패키지의 함수를 이용하려면 먼저 패키지를 설치하고 로드해야 함. 패키지 함수가 실행되지 않으면 우선 패키지를 로드했는지 확인하고, 패키지가 로드되지 않으면 아나콘다 프롬프트를 이용해 패키지를 설치한 다음 로드하면 됨.
[혼자서 해보기]
앞에서 익힌 기능을 활용해 분석 문제를 해결해보세요.
Q1. 시험 점수 변수 만들고 출력하기
학생 5명이 시험을 봤습니다. 학생들의 시험 점수를 담고 있는 변수를 만들어 출력해 보세요. 학생들의 시험 점수는 다음과 같습니다.
80, 60, 70, 50, 90 |
var = [80, 60, 70, 50, 90]
var
# output; [80, 60, 70, 50, 90]
Q2. 합계 점수 구하기
앞 문제에서 만든 변수를 이용해 합계 점수를 구해보세요.
sum(var)
# output; 350
Q3. 합계 점수 변수 만들어 출력하기
합계 점수를 담고 있는 새 변수를 만들어 출력해 보세요. 앞 문제를 풀 때 사용한 코드를 응용하면 됩니다.
score_sum = sum(var)
score_sum
# output; 350
'데이터 분석(Data Analysis) > 쉽게 배우는 파이썬 데이터 분석' 카테고리의 다른 글
[둘째마당_본격실습! 데이터 갖고 놀기] 07 데이터 정제 - 빠진 데이터, 이상한 데이터 제거하기 (0) | 2023.12.23 |
---|---|
[둘째마당_본격실습! 데이터 갖고 놀기] 06 자유자재로 데이터 가공하기 (0) | 2023.12.18 |
[둘째마당_본격실습! 데이터 갖고 놀기] 05 데이터 분석 기초! - 데이터파악하기, 다루기 쉽게 수정하기 (0) | 2023.12.17 |
[둘째마당_본격실습! 데이터 갖고 놀기] 04 데이터 프레임의 세계로 (0) | 2023.12.16 |
[첫째마당_파이썬이랑 친해지기] 01 안녕, 파이썬? (0) | 2023.12.14 |