← 주차 목록 06주차 Jupyter 도움말 — 자동완성과 함수 설명
PDF로 저장

함수 이름이 기억나지 않을 때

중간고사는 인터넷 없이 Jupyter Notebook 에서 봅니다. 검색은 못 하지만, 노트북이 직접 알려 주는 도움말은 쓸 수 있습니다.

  1. 1Tab — 이름을 몇 글자만 쓰고 누르면 나머지를 채워 주거나 후보 목록을 보여 줍니다
  2. 2Shift + Tab — 함수 괄호 안에서 누르면 그 함수가 받는 인자와 설명이 뜹니다
  3. 3? 와 help() — 함수 설명서 전체를 셀 아래에 펼쳐 봅니다

셋 다 인터넷이 필요 없습니다. 설명은 컴퓨터에 설치된 패키지 안에 들어 있습니다.

06주차 · 대표적인 이산형 확률분포01

가장 먼저 — 준비 셀을 실행한다

도움말은 지금 실행 중인 파이썬(커널)이 알고 있는 것만 보여 줍니다.

import numpy as np          # 이 셀을 실행해야
from scipy import stats     # np. 과 stats. 뒤에서 Tab 이 동작한다

scores = np.array([55, 60, 65, 62, 70])   # 실행해야 sc + Tab 에 scores 가 뜬다
import 나 변수를 만든 셀을 실행하지 않았으면 Tab 을 눌러도 아무것도 뜨지 않습니다.

노트북을 새로 열었거나 커널을 다시 시작했다면 위에서부터 다시 실행합니다 (Shift + Enter).

06주차 · 대표적인 이산형 확률분포02

Tab ① — 이름 이어 쓰기

이름의 앞 몇 글자를 쓰고 Tab 을 누릅니다.

np.me        ← 여기서 Tab
# 후보: mean   median   meshgrid ...

sc           ← 여기서 Tab
# 후보가 하나뿐이면 바로 채워진다 → scores
후보가 여럿이면 목록이 뜹니다. ↑ ↓ 로 고르고 Enter 로 넣습니다.

긴 변수 이름을 잘못 치는 실수(scroes)가 없어집니다. 오타로 나는 NameError 가 시험에서 가장 흔한 오류입니다.

IPython 문서 — Tab completion ipython.readthedocs.io/en/stable/interactive/tutorial.html

06주차 · 대표적인 이산형 확률분포03

Tab ② — 점(.) 뒤에서 무엇이 있는지 보기

점까지 쓰고 Tab 을 누르면 그 안에 든 함수 목록이 뜹니다. 이름을 몰라도 목록에서 찾을 수 있습니다.

이렇게 쓰고 Tab뜨는 것 (일부)
np.mean, median, var, std, percentile, random ...
np.random.choice, seed, randint ...
stats.binom, geom, poisson, bernoulli ...
df['score'].mean, median, mode, var, describe ...

목록이 너무 길면 한두 글자를 더 쓰고 다시 Tab 을 누릅니다. np.per + Tab → percentile.

06주차 · 대표적인 이산형 확률분포04

Tab ③ — 인자 이름도 채워 준다

함수 괄호 안에서 인자 이름의 앞글자를 쓰고 Tab 을 누르면 인자 이름이 뜹니다.

np.random.choice(nums, 3, re      ← 여기서 Tab
# → replace=

np.random.choice(nums, 3, replace=False)   # 비복원추출
replace 를 replce 로 치면 오류가 납니다. Tab 으로 채우면 철자가 틀릴 일이 없습니다.

06주차 · 대표적인 이산형 확률분포05

Shift + Tab — 함수 설명 띄우기

함수 이름 뒤 괄호 안에 커서를 두고 Shift + Tab 을 누르면 작은 설명 창이 뜹니다.

np.var(|)          ← 커서를 괄호 안에 두고 Shift + Tab

# 뜨는 설명의 첫 줄 (함수가 받는 인자)
# var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, ...)
첫 줄이 가장 중요합니다. 무엇을 넣어야 하는지, 기본값이 무엇인지가 다 적혀 있습니다.

지금 쓰는 Jupyter Notebook 7 에서는 한 번만 누릅니다. 예전 버전처럼 여러 번 눌러 크게 펼치는 기능은 없어졌으니, 긴 설명은 다음 장의 ? 로 봅니다.

JupyterLab 문서 — Code completer jupyterlab.readthedocs.io/en/stable/user/completer.html

06주차 · 대표적인 이산형 확률분포06

설명 첫 줄 읽는 법

var(a, axis=None, dtype=None, out=None, ddof=0, ...) 를 쪼개 봅니다.

부분뜻
a= 없이 이름만 있다 → 반드시 넣어야 하는 인자. 분산을 구할 데이터
ddof=0= 뒤에 값이 있다 → 안 넣으면 이 값을 쓴다. 0 이면 n 으로 나눈다
axis=None안 넣으면 None — 표 전체를 하나로 본다. 오늘은 신경 쓰지 않아도 된다

기본값이 있는 인자는 대부분 건드리지 않아도 됩니다. 반드시 넣어야 하는 인자만 챙기면 됩니다.

06주차 · 대표적인 이산형 확률분포07

예 — np.var 와 pandas var 가 다른 이유

같은 분산인데 값이 다르게 나온 적이 있습니다. Shift + Tab 으로 두 함수를 열어 보면 이유가 보입니다.

np.var(scores)          # 설명 첫 줄: ddof=0  → n 으로 나눈다 (교재 식)
df['score'].var()       # 설명 첫 줄: ddof=1  → n-1 로 나눈다

df['score'].var(ddof=0) # 기본값을 바꾸면 np.var 와 같아진다
외우지 않아도 됩니다. 헷갈리면 Shift + Tab 으로 ddof 기본값을 확인합니다.

06주차 · 대표적인 이산형 확률분포08

? 와 help() — 설명서 전체 보기

함수 이름 뒤에 ? 를 붙여 셀을 실행하면 설명서 전체가 뜹니다.

np.percentile?          # 설명서 전체
stats.binom?            # 이항분포 객체 설명
help(np.random.choice)  # ? 와 같은 내용을 셀 아래에 출력

np.var??                # ?? 두 개는 함수의 소스 코드까지
? 는 셀의 맨 끝에 한 번만 씁니다. 괄호는 붙이지 않습니다 — np.var()? 가 아니라 np.var?

IPython 문서 — Exploring your objects ipython.readthedocs.io/en/stable/interactive/tutorial.html

06주차 · 대표적인 이산형 확률분포09

설명서는 늘 같은 순서다

numpy·pandas·scipy 의 설명서는 같은 틀로 쓰여 있습니다. 필요한 칸만 찾아 읽습니다.

칸무엇이 있나언제 보나
첫 줄 (Signature)함수가 받는 인자와 기본값무엇을 넣어야 하는지 모를 때
Parameters인자 하나하나의 뜻인자 이름은 아는데 뜻을 모를 때
Returns무엇을 돌려주는지결과가 숫자인지 배열인지 궁금할 때
Examples실제 쓰는 예가장 빠르다 — 예를 그대로 따라 한다

설명서는 영어입니다. 문장을 다 읽지 않고 Examples 의 코드부터 보면 대부분 풀립니다.

06주차 · 대표적인 이산형 확률분포10

오늘 배운 분포에 써 보기

stats.binom(n, p) 로 만든 분포에도 점 뒤 Tab 이 동작합니다.

rv = stats.binom(10, 0.3)
rv.          ← 여기서 Tab
# 후보: pmf  cdf  mean  var  std  rvs ...

rv.pmf(3)    # P(X = 3)
rv.cdf(3)    # P(X <= 3)
pmf 인지 cdf 인지 헷갈리면 stats.binom.pmf? 로 설명을 봅니다 — 첫 줄이 Probability mass function. (rv.pmf? 에는 설명이 비어 있습니다)

06주차 · 대표적인 이산형 확률분포11

도움말이 안 뜰 때

  1. 1Tab 을 눌렀는데 칸이 들여쓰기만 된다 → 빈 줄이거나 커서 앞에 글자가 없다. 한 글자라도 쓰고 누른다
  2. 2np. 뒤에서 아무것도 안 뜬다 → import 셀을 실행하지 않았다
  3. 3Shift + Tab 이 안 뜬다 → 커서가 괄호 안에 있어야 한다. np.var( 까지 쓰고 누른다
  4. 4? 를 붙였는데 오류가 난다 → 괄호를 뺀다 (np.var? ) 또는 help(np.var) 로 쓴다

06주차 · 대표적인 이산형 확률분포12

한눈에 보기

하고 싶은 것누르거나 쓰는 것어디서
이름 채우기 · 후보 보기Tab이름 몇 글자 뒤, 점(.) 뒤
인자·기본값 보기Shift + Tab함수 괄호 안
설명서 전체np.var? 또는 help(np.var)셀에 쓰고 실행
소스 코드까지np.var??셀에 쓰고 실행
셀 실행Shift + Enter셀 안 어디서나

이 표를 중간고사 A4 요약지에 옮겨 적어 두셔도 됩니다.

06주차 · 대표적인 이산형 확률분포13

Q1

비복원추출 인자 찾기

np.random.choice(nums, 3, ___) 에서 비복원추출을 하려면 무엇을 넣나요? Shift + Tab 으로 확인해 보세요.

  1. 1unique=True
  2. 2replace=False
  3. 3repeat=False
  4. 4without=True

06주차 · 대표적인 이산형 확률분포14

A1

비복원추출 인자 찾기

replace=False

Shift + Tab 의 첫 줄이 choice(a, size=None, replace=True, p=None) 입니다. 기본값 replace=True 가 복원추출이므로, 비복원추출은 False 로 바꿉니다. 'False' 처럼 따옴표를 붙이면 글자로 읽혀 참이 되니 복원추출이 됩니다.

06주차 · 대표적인 이산형 확률분포15

Q2

P(X = 2) 를 구하는 메서드

rv = stats.poisson(3) 일 때 X 가 정확히 2 일 확률은? rv. 뒤에서 Tab 으로 후보를 보세요.

  1. 1rv.cdf(2)
  2. 2rv.pmf(2)
  3. 3rv.mean(2)
  4. 4rv.rvs(2)

06주차 · 대표적인 이산형 확률분포16

A2

P(X = 2) 를 구하는 메서드

rv.pmf(2)

pmf 는 확률질량함수, 곧 P(X = x) 입니다. cdf 는 P(X ≤ x) 라 0, 1, 2 의 확률을 모두 더한 값이 나옵니다. rvs 는 무작위로 값을 뽑는 함수입니다.

06주차 · 대표적인 이산형 확률분포17

Q3

percentile 의 두 번째 인자

np.percentile(scores, 25) 에서 25 는 무엇인가요? np.percentile? 로 Parameters 칸을 찾아보세요.

  1. 125번째 값
  2. 2상위 25%
  3. 3하위 25% 지점 (백분위수)
  4. 425개를 뽑는다

06주차 · 대표적인 이산형 확률분포18

A3

percentile 의 두 번째 인자

하위 25% 지점 (백분위수)

Parameters 칸의 q 가 0 부터 100 사이의 백분위수입니다. 25 는 작은 쪽에서 25% 지점, 곧 제1사분위수 Q1 입니다. 75 를 넣으면 Q3 입니다.

06주차 · 대표적인 이산형 확률분포19

정리

  1. 1몇 글자 쓰고 Tab — 이름을 채우고, 점 뒤에서는 무엇이 있는지 보여 준다
  2. 2괄호 안에서 Shift + Tab — 넣어야 할 인자와 기본값을 보여 준다
  3. 3? 와 help() — 설명서 전체. 막히면 Examples 부터 본다

다음 실습부터는 함수 이름을 끝까지 치지 말고 Tab 으로 채워 보세요. 시험 전에 손에 익어야 시험장에서도 씁니다.

06주차 · 대표적인 이산형 확률분포20