[파이썬 개념 10] 모듈과 라이브러리

2026-11-10 09:04 ·수정 2026-11-10 11:44

파이썬에는 다른 사람이 미리 만들어 둔 코드 묶음이 아주 많습니다. 이것을 가져다 쓰는 방법이 import 입니다.
pandas, scikit-learn 같은 데이터 분석 · 머신러닝 도구도 모두 이렇게 가져다 씁니다.

1. 모듈, 패키지, 라이브러리

말 뜻 예
모듈 함수와 값을 모아 둔 파이썬 파일 하나 math, random
패키지 모듈 여러 개를 묶은 폴더 sklearn.tree
라이브러리 패키지와 모듈을 모아 놓은 큰 도구 상자 pandas, scikit-learn

일상에서는 세 말을 섞어 씁니다. "남이 만든 코드 묶음을 가져다 쓴다" 는 것만 기억하면 됩니다.

2. import 하는 네 가지 방법

import 모듈

import math
print(math.sqrt(16))
print(math.pi)

실행 결과

4.0
3.141592653589793

math.sqrt 는 "math 모듈 안의 sqrt 함수" 라는 뜻입니다. 점(.)은 "~의" 로 읽으면 됩니다.

import 모듈 as 별명

이름이 길면 짧은 별명을 붙입니다. 데이터 분석에서는 정해진 별명을 다 같이 씁니다.

import math as m
print(m.sqrt(25))

실행 결과

5.0
관례 뜻
import pandas as pd pandas 를 pd 로
import numpy as np numpy 를 np 로
import matplotlib.pyplot as plt 그래프 도구를 plt 로

from 모듈 import 이름

필요한 것만 꺼내 오면 앞에 모듈 이름을 붙이지 않아도 됩니다.

from math import sqrt, gcd
print(sqrt(9), gcd(12, 18))

실행 결과

3.0 6

scikit-learn 은 주로 이 모양으로 씁니다.

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

sklearn.tree 는 "sklearn 패키지 안의 tree 모듈" 이고, 거기서 DecisionTreeClassifier 하나를 꺼내 온다는 뜻입니다.

가져오지 않고 쓰면

print(sqrt(16))

실행 결과

NameError: name 'sqrt' is not defined

import 는 그 노트북(또는 파일)에서 쓰기 전에 한 번 실행해야 합니다. Colab 에서 이 오류가 나면 맨 위의 import 셀을 실행했는지 확인합니다.

3. 자주 쓰는 표준 모듈

파이썬을 설치하면 함께 들어 있는 모듈입니다.

math: 수학

함수 하는 일 예 결과
math.sqrt(x) 제곱근 math.sqrt(2) 1.414…
math.ceil(x) 올림 math.ceil(2.1) 3
math.floor(x) 내림 math.floor(2.9) 2
math.gcd(a, b) 최대공약수 math.gcd(12, 18) 6
math.pi 원주율 3.14159…
import math
students, seats = 91, 45
print(math.ceil(students / seats))   # 필요한 버스 수
print(round(math.pi * 3 ** 2, 2))     # 반지름 3인 원의 넓이

실행 결과

3
28.27

random: 무작위

import random
random.seed(1)                       # 같은 결과가 나오게 고정
print(random.randint(1, 6))          # 1~6 중 하나 (주사위)
print(random.choice(["가위", "바위", "보"]))
nums = [1, 2, 3, 4, 5]
random.shuffle(nums)
print(nums)

실행 결과

2
보
[4, 2, 5, 3, 1]

random.seed(숫자) 를 쓰면 실행할 때마다 같은 순서로 무작위 값이 나옵니다. 머신러닝 코드의 random_state=0 도 같은 역할입니다. 결과를 다시 만들 수 있게 하는 것입니다.

4. 점(.)의 정체: 객체와 메서드

지금까지 이런 코드를 많이 보았습니다.

words = "a b c".split()
words.append("d")
print("python".upper(), words)

실행 결과

PYTHON ['a', 'b', 'c', 'd']

"a b c" 라는 문자열에게 .split() 을, words 라는 리스트에게 .append() 를 시킨 것입니다.
파이썬의 값은 모두 객체이고, 객체마다 할 줄 아는 기능이 있습니다. 이 기능을 메서드라고 합니다.

모양 읽는 법
math.sqrt(16) math 모듈의 sqrt 함수
words.append("d") words 객체에게 append 를 시킨다
df.head() df 객체에게 앞부분을 보여 달라고 한다
model.fit(X, y) model 객체에게 X, y 로 학습하라고 한다

어떤 기능이 있는지는 dir() 로 볼 수 있습니다.

print([m for m in dir([]) if not m.startswith("_")])

실행 결과

['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

5. 객체 만들기: 머신러닝 모델의 흐름

머신러닝 라이브러리는 객체를 만들고, 그 객체에게 일을 시키는 흐름으로 씁니다.

from sklearn.tree import DecisionTreeClassifier

# 공부 시간, 수면 시간 → 통과(1) / 미통과(0) 아주 작은 예제
X = [[1, 5], [2, 6], [6, 7], [7, 8], [3, 4], [8, 6]]
y = [0, 0, 1, 1, 0, 1]

model = DecisionTreeClassifier(max_depth=1, random_state=0)   # 1) 객체 만들기
model.fit(X, y)                                                # 2) 학습시키기
print(model.predict([[5, 7], [2, 8]]))                         # 3) 예측시키기
print(model.score(X, y))                                       # 4) 채점시키기

실행 결과

[1 0]
1.0
  1. DecisionTreeClassifier(...) : 결정트리 객체를 하나 만든다. 괄호 안은 설정값.
  2. model.fit(X, y) : 그 객체에게 데이터로 학습하라고 시킨다.
  3. model.predict(...) : 새 데이터를 맞혀 보라고 시킨다.
  4. model.score(...) : 정확도를 물어본다.

모델이 결정트리에서 다른 것(로지스틱 회귀, KNN, 랜덤포레스트)으로 바뀌어도 1번 줄만 바뀌고 2~4번은 같습니다. 그래서 이 네 줄 모양을 익혀 두면 새 모델이 나와도 겁먹지 않아도 됩니다.

6. 설치가 필요한 라이브러리

math, random 은 파이썬에 들어 있지만, pandas 나 scikit-learn 같은 라이브러리는 원래 따로 설치해야 합니다.

  • Colab 에는 데이터 분석과 머신러닝에 쓰는 라이브러리가 대부분 이미 설치되어 있어서 바로 import 하면 됩니다.
  • 내 컴퓨터에서는 터미널에 pip install pandas 처럼 설치합니다.
  • Colab 에서 없는 라이브러리를 쓰려면 셀에 !pip install 이름 을 실행합니다. 앞의 ! 는 "파이썬 코드가 아니라 명령어" 라는 표시입니다.

설치되지 않은 것을 가져오려 하면 이런 오류가 납니다.

import pureum_magic

실행 결과

ModuleNotFoundError: No module named 'pureum_magic'

7. 내 함수를 모듈처럼

내가 만든 함수도 .py 파일에 저장해 두면 다른 곳에서 import 해서 쓸 수 있습니다.
모듈은 특별한 것이 아니라 함수를 모아 둔 파이썬 파일일 뿐입니다.

# mytools.py 라는 파일에 저장해 두면
def average(nums):
    return sum(nums) / len(nums)
# 같은 폴더의 다른 코드에서
import mytools
print(mytools.average([80, 90, 100]))

정리

모양 뜻
import math math 를 가져와 math.이름 으로 쓴다
import pandas as pd 별명 pd 로 쓴다
from math import sqrt sqrt 만 꺼내 와 바로 쓴다
객체.메서드() 그 객체에게 일을 시킨다
model = 모델() → fit → predict → score 머신러닝 네 줄
  • import 는 쓰기 전에 한 번 실행한다.
  • 점(.)은 "~의" 또는 "~에게 시킨다" 로 읽는다.
  • 모델이 바뀌어도 fit, predict, score 의 모양은 같다.

확인 문제

  1. import numpy as np 다음에 numpy 의 mean 함수는 어떻게 부르나요?
  2. from math import ceil 과 import math 의 차이는 무엇인가요?
  3. 다음 코드에서 객체를 만드는 줄과 학습시키는 줄은 각각 어느 줄인가요?
    from sklearn.neighbors import KNeighborsClassifier
    model = KNeighborsClassifier(n_neighbors=3)
    model.fit(X_train, y_train)
    print(model.score(X_test, y_test))

연습해 보기

확인 문제 정답

  1. np.mean(...)
  2. from math import ceil 은 ceil(2.1) 처럼 바로 쓰고, import math 는 math.ceil(2.1) 처럼 모듈 이름을 붙여 씁니다.
  3. 객체 만들기는 둘째 줄 model = KNeighborsClassifier(...), 학습은 셋째 줄 model.fit(...) 입니다. 결정트리와 줄 모양이 같습니다.

댓글 0

로그인하면 댓글을 쓸 수 있습니다.