모듈은 자주 사용하거나 유용한 코드를 묶어 다른 곳에서 재사용할 수 있도록 만든 코드 모음을 말한다. 각 모듈은 서로 관련 있는 함수의 그룹을 포함하는데, 함수는 파이썬이 제공하는 기본적인 내장 함수(built-in functions), 내장 상수(built-in constants), 내장 타입(built-in types), 내장 예외 사항(built-in exceptions)을 제외하고는 모듈 형태로 제공된다.
하나의 모듈은 주로 하나의 파이썬 파일로 작성하며, 디렉터리 밑에 패키ㅣ 형태로 모듈을 작성한 파이썬 파일을 모아놓기도 한다. 하나의 파일로 작성되는 모듈의 구조는 다음과 같다.
모듈의 구조
모듈명.py
모듈 import
변수 선언 및 값 할당
함수 선언 및 정의
함수 호출
조건문, 반복문, 예외 처리 구문들
주석 구문
클래스 선언 및 정의 : 변수 선언 및 값 할당, 함수 선언 및 정의
모듈을 작성하는 코드의 순서는 정해져 있지 않으며, 위 요소 중 하나 이상으로 구성된다. 예를 들어 하나의 모듈 안에는 함수 호출 구문이나 변수만 있을 수도 있고, 모든 요소를 조합해서 구성할 수도 있다. 모듈 내의 모든 구성 요소들은 생략하거나 여러 번 사용될 수 있다.
라이브러리(library)는 여러 패키지와 모듈을 모아놓은 것을 의미하며, 패키지(package)는 특정 기능을 수행하기 위해서 관련 있는 모듈들을 폴더 형태로 모아놓은 것을 의미한다. 라이브러리는 패키지들이 모여 있는 형태로 패키지보다는 좀 더 포괄적인 개념이지만 일반적으로 라이브러리와 패키지라는 용어는 혼용해서 사용하므로 이 책에서도 알맞게 혼용하기로 한다.
모듈은 변수, 함수, 클래스, 기타 구문들을 모아놓은 파일로 구성되며 라이브러리와 구분할 필요가 있다. 일반적으로 라이브러리명과 모듈명은 동일하다. 그러나 라이브러리와 모듈은 다르게 사용되므로 꼭 구분해야 한다. 라이브러리를 설치할 때는 라이브러리명을 사용하고, 파이썬 코드 내에서 참조할 때는 모듈명을 사용한다.
파이썬을 처음 설치하면 기본적으로 파이썬의 표준 라이브러리들이 함께 설치된다. 표준 라이브러리가 제공하는 기본 기능 외에 더 다양한 기능을 사용하고 싶다면 외부 라이브러리를 설치하는데, 이때 pip 명령어로 설치한다.
pip는 package installer for python의 약자이며, 파이썬으로 작성된 패키지 소프트웨어를 설치 및 관리하는 패키지 관리 시스템이다. pip는 파이썬 3.4 버전부터 기본적으로 파이썬 설치 프로그램에 포함되어 있으므로 추가로 설치하지 않아도 사용할 수 있다.
의존성 라이브러리는 Requires 또는 Dependencies라고 하는데, 특정 라이브러리를 설치하거나 사용할 때 필요로 하는 다른 라이브러리를 의미한다.
PyPI
파이썬에서 외부 라이브러리(패키지)를 사용하고 싶을 때는 PyPI 사이트(https://pypi.org)에서 다양한 파이썬 라이브러리들을 다운받을 수 있다. PyPI는 Python Package Index의 약자이며, 파이썬 관련 소프트웨어를 모두가 사용할 수 있도록 만들어진 오픈소스 라이선스 패키지의 공개 저장소다.
PyPI 사이트에서는 파이썬 라이브러리의 설치 방법이나 버전 정보 등을 확인할 수 있다. 홈페이지 첫 화면에서 현재 기준으로 40만개 이상의 라이브러리(패키지)가 존재하는 것을 알 수 있고, 이 숫자는 계속 늘어난다.
라이브러리(패키지) 저장소는 좀 더 복잡한 구조로 구성되어 있지만 구조를 간단히 살펴보면 다음과 같다.
로컬 PC - 모둘명
PyPI 라이브러리 저장소 - 라이브러리명
pip install 라이브러리명
pip 명령 등으로 라이브러리를 설치할 때 라이브러리 이름을 입력하면 PyPI 사이트의 저장소에 접속하여 해당 라이브러리를 찾아서 PC에 다운로드된다. 그리고 라이브러리가 PC에 저장될 때는 모듈명으로 저장된다.
따라서 PC에 다운로드된 라이브러리를 파이썬 코드에서 사용하려면 모듈명을 사용해야 한다. 즉, 라이브러리를 설치할 때는 라이브러리명을 사용하고, 코드에서 사용할 때는 모듈명을 사용한다는 정도로만 이해하자.
파이썬 표준 라이브러리에서는 문자열(string), 날짜(date), 시간(time), 수학(math), 분수(fraction), 십진법(decimal), 랜덤(random), 파일(file) 등등 약 200여 개의 다양한 모듈을 제공한다.
모듈은 크게 세 가지로 나눌 수 있다.
서드파티란 일반적으로 제조사와 사용자 이외 외부의 생산자를 가리키는 뜻인데, 프로그래밍에서는 프로그래밍을 도와주는 플러그인이나 라이브러리 등을 만드는 개인 개발자나 프로젝트 팀, 혹은 업체 등을 말한다. 즉, 파이썬 표준 라이브러리에서 제공하는 것이 아닌 제삼자가 만든 라이브러리를 서드파티 라이브러리라고 한다.
세 가지 모듈 중 사용자 정의 모듈을 사용하기 위한 단계를 살펴보자.
1. 사용하고자 하는 모듈을 파일로 작성한다.
2. 다음 중 하나로 모듈의 위치를 정한다.
PYTHON_HOME은 파이썬 설치 디렉터리를 의미한다. 파이썬 표준 라이브러리 모듈이 위치한다.
또한, C:\Python\Lib\site-packages에는 파이썬 표준 라이브러리 이외에 파이썬을 설치하면 기본적으로 제공되는 서드파티 라이브러리들이 위치한다. 서드파티 라이브러리를 추가로 설치해도 이 디렉터리에 다운로드된다.
import 모듈명
pip install 라이브러리명
모듈을 임포트하는 여러 가지 방법을 알아보자. 모듈에 있는 함수 등을 사용하려면 먼저 import문으로 모듈을 가져와야 하는데, 임포트하지 않아도 되는 다음 두 가지 경우를 제외하고는 항상 모듈을 사용하기 이전에 모듈을 임포트해야 한다.
import문 없이 사용할 수 있는 내장 영역의 리스트를 출력해보자. 파이썬 셀에서 dir(__builtins__) 함수를 실행한다. 이때 언더바는 두 개씩 사용한다.
예를 들어 워드 문서에 이미지를 넣는 과정을 생각해보자. 그림 삽입 메뉴에서 해당 이미지가 있는 디렉터리를 찾아서 삽입할 이미지를 선택한다. 이는 워드 프로그램에게 어디에 있는 어떤 파일을 가져올지 내부적으로 이미지 파일의 이름과 위치 정보인 경로를 명시해주는 것이다.
이처럼 모듈을 사용할 때도 import문으로 모듈의 경로를 알려주는 것이다. 조금 어려운 표혀느로 모듈을 현재 네임스페이스(namespace)로 가져온다고 한다.
이제 모듈을 임포트하는 방법을 살펴보자. 임포트할 대는 import, from, as라는 파이썬 예약어를 사용한다. 다음은 모듈을 임포트하는 가장 기본적인 방법이다.
import 모듈명
모듈을 임포트하고 나면 코드 내에서 '모듈명, 함수명()' 형식으로 모듈 안의 함수나 클래스, 변수 등을 사용할 수 있다.
다음은 모듈명을 별칭(alias)으로 사용하는 방법이다. 모듈명이 길어서 매번 입력하기 번거로울 때 편리하다.
import 모듈명 as 별칭명
'별칭명.함수명()' 형식으로 모듈 안의 함수나 클래스, 변수 등을 사용할 수 있다.
다음은 모듈 전체가 아니라 모듈에 있는 특정 함수, 클래스, 변수를 사용하기 위해 임포트하는 방법이다.
from 모듈명 import <함수명 혹은 클래스명 혹은 변수명>
예를 들면
from os import mkdir
이렇게 하면 os.mkdir() 이렇게 사용하지 않고 모듈명 없이 함수 사용 가능
mkdir()
모듈의 특정 함수, 클래스, 변수를 모듈명 대신 별칭으로 사용할 때는 다음과 같이 작성한다.
from 모듈명 import <함수명 혹은 클래스명 혹은 변수명> as 별칭명
from os import mkdir as make
make() 이렇게 사용할 수 있음
다음과 같이 *를 이용해 모듈의 모든 구성 요소를 임포트하면 코드 내에서 함수, 클래스, 변수 등을 모듈명 없이 '함수명()' 형식으로 사용할 수 있다.
from <모듈명> import *
파이썬을 설치할 때 기본으로 포함된 파이썬 표준 라이브러리의 모듈이나 추가로 설치하는 서드파티 라이브러리의 모듈을 주로 사용하기는 하지만, 프로그래밍응 하다 보면 모듈을 직접 정의해야할 때도 있다.
파일 생성해서 생성된 파일에는 모듈과 각 함수의 구현부 첫 번째 줄에 독스트링을 작성한다.
'''사용자 정의 모듈
사원의 급여를 출력하는 함수를 제공
'''
def calc_salary(emp, salary) :
'''급여 계산 함수
emp : 입력값은 사원 혹은 임원
salary : 급여
사원과 임원의 급여를 계산하여 출력한다.'''
base = 2000000
extra = 5000000
if emp == '사원' :
salary = base + salary
elif emp == '임원' :
salary = base + extra + salary
print('%s의 급여는 %d입니다.' %(emp, salary))
def info(code) :
'''사원 정보 출력 함수.
code : 사원 코드
사원 코드에 따라 사원과 부서의 정보를 출력한다.'''
if code == '001-001' :
employee = '총무팀 일반직'
elif code == '001-002' :
employee = '총무팀 관리직'
elif code == '002-001' :
employee = '개발팀 일반직'
elif code == '002-002' :
employee = '개발팀 관리직'
elif code == '003-001' :
employee = '운영팀 일반직'
elif code == '003-002' :
employee = '운영팀 관리직'
elif code == '004-001' :
employee = '임원'
else :
employee = '기타'
print('조회하신 사원의 정보입니다.')
print('%s 코드는 %s 입니다.' %(code, employee))
calc_salary('사원', 1000000)
info('004-001')
출력 결과
사원의 급여는 3000000입니다.
조회하신 사원의 정보입니다.
004-001 코드는 임원 입니다.
앞에서 정의한 모듈을 사용하는 코드
다른 패키지에 파일을 생성
New -> Python Package
basic2 생성하고 안에 employee_test.py 파일 만듦
import basic.employee as emp
print('다른 패키지에 있는 employee 내 함수 호출')
emp.info('001-001')
emp.calc_salary('임원', 1000000)
import 한 다음 함수 호출 출력
출력 결과
사원의 급여는 3000000입니다.
조회하신 사원의 정보입니다.
004-001 코드는 임원 입니다.
다른 패키지에 있는 employee 내 함수 호출
조회하신 사원의 정보입니다.
001-001 코드는 총무팀 일반직 입니다.
임원의 급여는 8000000입니다.
employee 모듈의 구조를 보면 calc_salary() 함수와 info() 함수를 정의하는 코드 외에도 두 함수를 호출하는 코드가 있다. 따라서 employee_test에서 employee 모듈의 info() 함수를 호출할 때 employee 모듈에 포함된 다른 함수들까지 호출된 것이다.
employee 모듈에 작성한 print 구문은 employee 에서만 실행하고 싶고 외부에서 호출했을 때는 사용하고 싶지 않은데 print 구문도 같이 출력됨
__main__ 속성을 사용하면 됨
우선 기존 함수는 그대로 두고 들여쓰기에 주의해서 print를 main() 함수로 감싼다. if문 추가
employee.py
'''사용자 정의 모듈
사원의 급여를 출력하는 함수를 제공
'''
def calc_salary(emp, salary) :
'''급여 계산 함수
emp : 입력값은 사원 혹은 임원
salary : 급여
사원과 임원의 급여를 계산하여 출력한다.'''
base = 2000000
extra = 5000000
if emp == '사원' :
salary = base + salary
elif emp == '임원' :
salary = base + extra + salary
print('%s의 급여는 %d입니다.' %(emp, salary))
def info(code) :
'''사원 정보 출력 함수.
code : 사원 코드
사원 코드에 따라 사원과 부서의 정보를 출력한다.'''
if code == '001-001' :
employee = '총무팀 일반직'
elif code == '001-002' :
employee = '총무팀 관리직'
elif code == '002-001' :
employee = '개발팀 일반직'
elif code == '002-002' :
employee = '개발팀 관리직'
elif code == '003-001' :
employee = '운영팀 일반직'
elif code == '003-002' :
employee = '운영팀 관리직'
elif code == '004-001' :
employee = '임원'
else :
employee = '기타'
print('조회하신 사원의 정보입니다.')
print('%s 코드는 %s 입니다.' %(code, employee))
def main() :
print('사원의 급여와 사원 코드 정보를 모두 출력')
calc_salary('사원', 1000000)
info('004-001')
if __name__ == '__main__' :
main()
맨 아래에 추가한 if문은 __name__ 이 __main__인 경우에만 main() 함수를 호출하라는 의미다. employee.py 파일에서 실행하면 출력 결과
사원의 급여와 사원 코드 정보를 모두 출력
사원의 급여는 3000000입니다.
조회하신 사원의 정보입니다.
004-001 코드는 임원 입니다.
다른 파일에서 이 모듈을 임포트할 때는 name에 패키지명을 포함한 파일명인 basic.employee가 할당된다. 이때는 if문이 False가 되어 main() 함수를 호출하지 않는다.
employee_test.py 에서 실행했을 때
다른 패키지에 있는 employee 내 함수 호출
조회하신 사원의 정보입니다.
001-001 코드는 총무팀 일반직 입니다.
임원의 급여는 8000000입니다.
print('__name__은?', emp.__name__)
// __name__은? basic.employee
파이썬 표준 라이브러리의 사용법은 파이썬 홈페이지에서 제공하는 공식 문서를 통해 확인할 수 있다.
https://docs.python.org/3
다음의 파이썬 공식 문서에서 보이는 버전은 3.10.6인데, 세 번째 숫자는 버그 픽스 버전이어서 자주 바뀔 수 있다. 파이썬의 버전은 두 번째 숫자까지만 일치하면 내부에 포함된 모듈이 같으므로 동일한 문서를 참고하면 된다. Library Reference 링크
str 클래스는 파이썬에 기본적으로 내장된 클래스다. 이를 내장 타입(built-in types) 이라고 부른다. 작은따옴표 혹은 큰따옴표 안에 문자열을 입력하면 str 클래스의 객체가 생성된다.
s = 'python'
type(s) // <class 'str>
s // 'python'
s라는 변수에 문자열 'python'을 할당했다. s 변수의 type을 확인해보면 str 클래스라는 것을 확인할 수 있다. s 변수를 통해 문자열 'python' 을 참조할 수 있으며, 문자열이 할당된 s 변수는 str 클래스의 객체이므로 str 클래스가 가지고 있는 다양한 함수를 호출할 수 있다.
print(dir(str))
['__add__', '__class__', '__contains__', '__delattr__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__getnewargs__',
'__getstate__', '__gt__', '__hash__', '__init__',
'__init_subclass__', '__iter__', '__le__', '__len__',
'__lt__', '__mod__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmod__',
'__rmul__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'capitalize', 'casefold', 'center',
'count', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'format_map', 'index', 'isalnum', 'isalpha',
'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower',
'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper',
'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition',
'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex',
'rjust', 'rpartition', 'rsplit', 'rstrip', 'split',
'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
str 클래스의 주요 함수는 다음과 같다.
삼각함수, 제곱근, 로그함수 등 수학과 관려된 기능을 담당하는 모듈이다. 모듈을 사용하기 전에 반드시 임포트를 먼저 해야 한다.
import math
print(dir(math))
['__doc__', '__loader__', '__name__', '__package__',
'__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos',
'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2',
'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod',
'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose',
'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp',
'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan',
'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians',
'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh',
'tau', 'trunc', 'ulp']
시간 데이터를 처리할 때 사용하는 모듈로, 모듈을 사용하기 전에 반드시 임포트를 먼저 해야 한다. time 모듈의 주요 함수는 다음과 같다.
협정 세꼐시(Universal Time Coordinated. UTC)는 1972년 1월 1일부터 시행된 국제 표준시이며, 지방 표준시(Local Standard Time, LST)는 협정 세계시를 기준으로 경도 15도마다 1시간씩 차이가 발생한다.
time 모듈은 시간을 표현하는 정보를 모아 놓은 struct_time 객체를 가지며, 객체의 속성은 다음과 같다.
datetime 모듈은 날짜와 시간에 관련된 기능을 제공하며 주요 클래스는 다음과 같다.
import datetime
d = datetime.date.today()
print(d) // 2025-07-31
print(d.year) // 2025
print(d.month) // 7
print(d.day) // 31
# 10일 후 계산
td = datetime.timedelta(days=10)
dd = d + td
print(dd) // 2025-08-10
calendar 모듈은 달력에 대한 정보를 확인할 수 있는 모듈로, 모듈이 가진 함수 및 속성을 확인하면 다음과 같다.
import calendar
print(dir(calendar))
['APRIL', 'AUGUST', 'Calendar', 'DECEMBER', 'Day', 'EPOCH',
'FEBRUARY', 'FRIDAY', 'HTMLCalendar', 'IllegalMonthError',
'IllegalWeekdayError', 'IntEnum', 'JANUARY', 'JULY', 'JUNE',
'LocaleHTMLCalendar', 'LocaleTextCalendar', 'MARCH', 'MAY',
'MONDAY', 'Month', 'NOVEMBER', 'OCTOBER', 'SATURDAY',
'SEPTEMBER', 'SUNDAY', 'THURSDAY', 'TUESDAY', 'TextCalendar',
'WEDNESDAY', '_EPOCH_ORD', '__all__', '__builtins__',
'__cached__', '__doc__', '__file__', '__getattr__',
'__loader__', '__name__', '__package__', '__spec__',
'_colwidth', '_get_default_locale', '_locale',
'_localized_day', '_localized_month', '_monthlen',
'_nextmonth', '_prevmonth', '_spacing', '_validate_month',
'c', 'calendar', 'datetime', 'day_abbr', 'day_name',
'different_locale', 'error', 'firstweekday', 'format',
'formatstring', 'global_enum', 'isleap', 'leapdays', 'main',
'mdays', 'month', 'month_abbr', 'month_name',
'monthcalendar', 'monthrange', 'prcal', 'prmonth', 'prweek',
'repeat', 'setfirstweekday', 'sys', 'timegm', 'week',
'weekday', 'weekheader']
prmonth()는 주어진 연도의 월을 달력 형태로 출력해주는 함수
calendar.prmonth(2025, 7)
July 2025
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
파이썬의 장점 중 하나는 여러 분야에서 사용할 수 있는 수많은 라이브러리를 제공한다는 점이다. 여기서 소개할 라이브러리들은 실제 업무에서 많이 사용하는 서드파티 라이브러리이다.
넘파이(numerical python, NumPy)는 빠르고 효율적으로 리스트 및 배열 객체를 다룰 수 있어 주로 과학이나 수학 연산, 빅데이터 분석에 많이 사용한다. 주요 기능은 선형대수 계산, 푸리에 변환, 난수 생성이다.
넘파이는 왜 빠를까? 파이썬은 실행할 대 코드를 읽으면서 해석하는 인터프리터 언어여서 미리 기계어로 번역된 코드를 실행하는 컴파일 방식의 언어보다 실행 속도가 느리다. 그런데 넘파이는 컴파일 방식의 C언어로 구현되어 있어 파이썬보다 훨씬 실행 속도가 빠르다.
데이터 분석용 라이브러리인 판다스, 시각화 라이브러리인 맷플롯립이 내부적으로 넘파이를 사용하고 있으며 과학 및 수학 연산에 관련된 다른 라이브러리들도 넘파이를 기반으로 하고 있다. 따라서 넘파이를 파운데이션(foundation : 토대, 기초) 라이브러리라고도 부른다.
http://www.numpy.org
판다스(pandas)는 다차원으로 구조화된 데이터를 뜻하는 패널 데이터(PANel Data)와 파이썬 데이터 분석(python data analysiS)의 합성어다. 구조화된 데이터를 빠르고 쉬우면서도 다양한 형식으로 가공할 수 있는 풍부한 자료 구조와 함수를 제공하여 파이썬으로 데이터 분석을 할 때 가장 많이 사용하며, 머신러닝이나 딥러닝 라이브러리와 함께 사용되기도 한다.
판다스의 특징은 다음과 같다.
사이파이(SciPy)는 과학 계산 컴퓨팅 영역의 여러 기본 문제를 다루는 라이브러리다. 미적분 같은 고급 수학 함수와 최적화, 신호 처리 등을 위한 다양한 과학 기술 계산 기능을 제공한다.
http://www.scipy.org
사이킷런(scikit-learn)은 머신러닝 학습용 라이브러리다. 사이킷런에서는 머신러닝 모델을 대부분 제공하므로 파이썬으로 머신러닝을 공부할 때 최적의 학습 도구라고 할 수 있다.
http://scikit-learn.org
텐서플로(TensorFlow)는 신경망 등의 딥러닝 모델을 위한 파이썬 라이브러리다. 심볼릭 연산과 그래프 연산 모형 및 다양한 연산 방식을 제공하므로 대량 연산이 필요한 딥러닝 학습에 필수적인 라이브러리다.
https://www.tensorflow.org
케라스(Keras)는 텐서플로 라이브러리를 쉽게 사용할 수 있도록 도와주는 고수준의 라이브러리로, 특히 신경망 모델을 손쉽게 구현할 수 있다.
https://keras.io
아이파이썬(IPython)은 Interactive Python의 줄임말로, 사용자와 상호작용 방식으로 동작하면서 매우 생산적인개발 및 실행 환경을 제공한다. 이때 상호작용이란 코드를 입력하면 결과를 보여주고 그에 따른 다양한 명령을 수행할 수 있는 것을 의미한다.
파이썬 코드를 작성할 대 자동 완성 기능을 제공하고, 테스트 및 디버깅과 코드를 실행할 수 있는 향상된 파이썬 셀을 제공한다. 또한 아이파이썬은 웹 브라우저와 연결할 수 있는 HTML 노트북인 주피터 노트북(Jupyter Notebook)을 제공한다. 다음 그림처럼 주피터 노트북에서 코드를 실행하면 바로 실행 결과를 확인할 수 있다.
주피터 노트북은 그래프를 그리거나 코드를 여러 줄로 나눠서 편집할 수 있는 기능들이 제공되어 파이썬으로 데이터 분석과 시각화를 할 때 가장 많이 사용된다.
https://ipython.org
맷플롯립(matplotlib)은 데이터 시각화를 위한 라이브러리다. 파이썬의 수많은 시각화 라이브러리가 맷플롯립을 기반으로 한다. 맷플롯립은 데이터 분석 결과를 엑셀보다 빠르고 다양하게 시각화할 수 있고, 아이파이썬에 통합되어 있어서 주피터 노트북 에서 편리하게 사용할 수 있다.
http://matplotlib.org/
시본(seaborn)은 맷플롯립을 기반으로 만들어진 시각화 라이브러리다. 맷플롯립에 비해서 코드를 짧게 작성할 수 있으면서도 디자인적으로 좀 더 세련된 그래프 그리기를 지원한다. 맷플롯립과 유사한 방식으로 주피터 노트북에서 사용할 수 있다.
https://seaborn.pydata.org
보케(bokeh)는 웹 브라우저상에서의 시각화에 효과적인 파이썬 인터렉티브 시각화 라이브러리다.
맷플롯립과 사용 방법이 유사하며, 주피터 노트북과도 원활히 호환된다.
https://docs.bokeh.org
플롯나인(plotnine)은 사용자 정의 및 기타 복잡한 그래프를 단순하게 생각하고 작성하기 쉽게 해주는 파이썬 시각화 라이브러리다. R에서 시각화를 할 때 주로 사용하는 ggplot2 패키지를 기반으로 하여 기존의 R 사용자들이 거의 동일한 방식으로 파이썬 그래프를 작성할 수 있으며, 특히 통계적인 시각화에 강력하다.
https://plotnine.readthedocs.io
폴리움(Folium)은 지리적 데이터 시각화에 특화된 라이브러리로 리플릿(leaflet.js)을 기반으로 한다. 위도와 경도만 입력하면 지도를 그려줄 정도로 지도 데이터 사용을 위한 선행 작업이 적다. 지도에 마커를 설정하거나 등치 지역도(choropleth map) 등 다양한 지도로 시각화하는 방법을 제공한다.
https://python-visualization.github.io/folium