파이썬 표준 라이브러리
- 1. math 모듈
- 2. random 모듈
- 3. sys 모듈
- 4. os 모듈
- 5. time 모듈
- 6. datetime 모듈
- 7. urllib 모듈
- 8. calendar 모듈
- 9. json 모듈
- 10. re 모듈
- 11. collections 모듈
- 파이썬에는 수많은 표준 라이브러리가 기본적으로 내장되어 있습니다.
- 그 중에서 자주 사용할만한 몇 개의 라이브러리의 예시를 살펴보겠습니다.
- 그 외의 필요한 라이브러리들은 파이썬 공식 사이트의 레퍼런스를 참고하시기 바랍니다.
1. math 모듈
- 수학 관련 함수들을 제공하는 모듈
- 특히 정밀한 계산을 위한 복잡한 수학 연산 라이브러리 제공
제곱근, 삼각함수, 로그함수, 팩토리얼 등의 수학 연산 및 상수 값(pi, e)과 반올림, 내림, 올림 함수 등의 간단한 함수 포함
import math print(math.sin(math.radians(45))) print(math.sqrt(2)) print(math.factorial(5))
2. random 모듈
- 난수 생성을 위한 다양한 함수 제공
- 리스트에서 무작위 선택(choice), 범위 내 난수 생성(randint), 리스트 섞기(shuffle) 등 지원
- 통계적 분포(가우시안, 이항 등)에 따른 난수 생성 가능
특히 AI 모델의 학습 등을 위한 모델 초기화 등에서 항상 사용됨
import random for i in range(5): print(random.random())for i in range(5): print(random.randint(1, 10))import random # randrange()를 사용해서 0~100 사이의 숫자 생성하기 print ("Random number from 0~100 is : ",end="") print (random.randrange(100))# randrange()를 사용해서 50~100 사이의 숫자 생성하기 print ("Random number from 50~100 is : ",end="") print (random.randrange(50,100))# randrange()를 사용해서 50~100 사이의 숫자를 5 간격을 기준으로 생성하기 print ("Random number from 50~100 skip 5 is : ",end="") print (random.randrange(50,100,5))import random # 리스트에서 랜덤으로 값 가져오기 list1 = [1, 2, 3, 4, 5, 6] print(random.choice(list1))# 문자열에서 랜덤으로 값 가져오기 string = "striver" print(random.choice(string))import random # 리스트 정의 sample_list = ['A', 'B', 'C', 'D', 'E'] print("Original list : ") print(sample_list)# 리스트 섞기 random.shuffle(sample_list) print("\nAfter the first shuffle : ") print(sample_list)# 두 번째 셔플(섞기) random.shuffle(sample_list) print("\nAfter the second shuffle : ") print(sample_list)import random # 리스트로부터 길이 3의 랜덤 아이템으로 구성된 리스트를 샘플링하여 출력 list1 = [1, 2, 3, 4, 5, 6] print("With list:", random.sample(list1, 3))# 문자열로부터 길이 4의 랜덤 아이템으로 구성된 리스트를 샘플링하여 출력 string = "GeeksforGeeks" print("With string:", random.sample(string, 4))# 튜플로부터 길이 4의 랜덤 아이템으로 구성된 리스트를 샘플링하여 출력 tuple1 = ("ankit", "geeks", "computer", "science", "portal", "scientist", "btech") print("With tuple:", random.sample(tuple1, 4))# set(집합)으로부터 길이 3의 랜덤 아이템으로 구성된 리스트를 샘플링하여 출력 set1 = {"a", "b", "c", "d", "e"} print("With set:", random.sample(set1, 3)) # '오류 설명' 버튼을 이용해보자.import random # set(집합)으로부터 길이 3의 랜덤 아이템으로 구성된 리스트를 샘플링하여 출력 set1 = {"a", "b", "c", "d", "e"} # set을 list로 변환하여 sample 함수에 전달합니다. print("With set:", random.sample(list(set1), 3))import random for i in range(5): random.seed(1234) print(random.randint(1, 1000))
3. sys 모듈
- 파이썬 인터프리터와 상호작용하는 기능 제공
- 명령줄 인자(argv), 표준 입출력 스트림, 종료(exit) 등 제어 가능
모듈 경로(path)와 버전 정보 확인 가능
import sys print("버전:", sys.version) print("플랫폼:", sys.platform)if sys.platform == "win32": print(sys.getwindowsversion()) else: print("윈도우가 아닙니다.")print("바이트 순서:", sys.byteorder) print("모듈 경로:", sys.path)
4. os 모듈
- 운영체제와 상호작용하는 기능 제공
- 파일/디렉토리 생성, 삭제, 이름 변경 등의 파일 시스템 작업 지원
환경 변수 접근, 프로세스 관리, 경로 조작 기능 포함
import os # 기본 정보 출력 print("현재 운영체제:", os.name) print("현재 폴더:", os.getcwd()) print("현재 폴더의 내부 요소:", os.listdir())# 폴더 생성 os.mkdir("hello")# 폴더 삭제 os.rmdir("hello")# 파일 생성 with open("original.txt", "w") as file: file.write("hello")# 파일명 변경 os.rename("original.txt", "new.txt")# 파일 삭제 os.remove("new.txt")- 시스템 명령어 실행
- Unix/Linux 계열은 Windows 계열과 명령어에 대한 결과가 다름
- Unix에서 반환 값은 두 개의 서로 다른 정보를 포함하는 16비트 숫자이며, 여기에서의 결과 0은 오류가 없음을 의미함
- 여기에서는 16비트 숫자로, 로우 바이트가 프로세스를 종료한 신호 번호이고 하이 바이트가 종료 상태(신호 번호가 0인 경우)를 의미함
# 시스템 명령어 실행 os.system("dir")
5. time 모듈
- 시간 관련 함수 제공
- 현재 시간 얻기, 시간 지연(sleep), 시간 측정 등
- 시간 형식 변환과 타임스탬프 조작에 유용함
기본적으로 유닉스 시간을 기준으로 함
import time print(time.time())# 일상 시간 문자열로 변환 가능 t = time.time() print(time.ctime(t))# 실행 시간 측정 start = time.time() for a in range(100): print(a) end = time.time() print(end - start)
6. datetime 모듈
- 날짜와 시간을 처리하기 위한 클래스 제공
- 날짜/시간 연산, 형식 변환, 타임존 처리 가능
time 모듈보다 더 직관적이고 고수준의 인터페이스 제공
import datetime # 현재 날짜와 시간 출력 now = datetime.datetime.now() print("현재 날짜와 시간:", now) # 날짜 연산하기 future_date = now + datetime.timedelta(days=30) print("30일 후:", future_date) # 특정 형식으로 날짜 출력 formatted_date = now.strftime("%Y년 %m월 %d일 %H시 %M분") print("포맷팅된 날짜:", formatted_date)
7. urllib 모듈
- URL 작업을 위한 여러 모듈을 포함하는 패키지
- 웹 리소스 열기, 데이터 검색, HTTP 요청 처리 등 가능
URL 파싱, 인코딩/디코딩, 요청 헤더 설정 기능 제공
from urllib import request target = request.urlopen("https://google.com") output = target.read() print(output)
8. calendar 모듈
- 달력 관련 함수 제공
- 년/월 달력 출력, 요일 확인, 윤년 판단 등 가능
날짜 계산과 달력 형식 지정 기능 포함
import calendar print(calendar.calendar(2022)) print(calendar.month(2022, 9))
9. json 모듈
- JSON 데이터의 인코딩/디코딩 기능 제공
- 파이썬 객체를 JSON 문자열로 변환, 그 반대도 가능
웹 API와의 데이터 교환에 매우 유용
import json # 파이썬 딕셔너리 생성 data = { "이름": "홍길동", "나이": 25, "관심분야": ["모빌리티 데이터", "머신러닝", "레트로 게임"], "개발자": True } # 딕셔너리를 JSON 문자열로 변환 json_str = json.dumps(data, ensure_ascii=False, indent=4) print(json_str) # JSON 문자열을 파이썬 객체로 변환 parsed_data = json.loads(json_str) print(parsed_data["관심분야"][0]) # 모빌리티 데이터 출력
10. re 모듈
- 정규 표현식을 사용한 문자열 검색과 조작 기능 제공
- 패턴 매칭, 문자열 추출, 치환 등의 고급 텍스트 처리 가능
복잡한 문자열 검증 및 파싱 작업에 필수적
import re # 이메일 주소 패턴 매칭 text = "연락처: user@example.com, admin@test.co.kr" emails = re.findall(r'[\w\.-]+@[\w\.-]+', text) print("찾은 이메일:", emails) # 문자열 치환하기 phone = "전화번호: 010-1234-5678" masked_phone = re.sub(r'(\d{3})-(\d{4})-(\d{4})', r'\1-\2-****', phone) print(masked_phone) # 전화번호: 010-1234-****
11. collections 모듈
- 기본 자료구조를 확장한 특수 컨테이너 타입 제공
- Counter, defaultdict, OrderedDict, deque 등 효율적인 데이터 구조 포함
데이터 처리와 알고리즘 구현에 매우 유용
from collections import Counter, defaultdict, deque # Counter 사용 예제 text = "머신러닝과 딥러닝을 활용한 모빌리티 데이터 분석" word_count = Counter(text.split()) print("단어 빈도수:", word_count) # defaultdict 사용 예제 interests = [('AI', '홍길동'), ('데이터분석', '홍길동'), ('AI', '전우치'), ('레트로게임', '홍길동')] interest_dict = defaultdict(list) for category, person in interests: interest_dict[category].append(person) print("관심사별 사람들:", dict(interest_dict)) # deque 사용 예제 (양방향 큐) tasks = deque(["태스크1", "태스크2", "태스크3"]) tasks.append("태스크4") # 오른쪽에 추가 tasks.appendleft("태스크0") # 왼쪽에 추가 print("작업 목록:", list(tasks))