오늘도 SQL 코드카타로 하루를 시작했다. 어제에 이어 매일 아침의 루틴이 자연스러워지고 있다. 그리고 Python의 표준 라이브러리 활용 방법과 GIS 데이터분석 특강까지 들었다.
어제와 같이 오늘도 SQL 코드카타 10문제를 풀었다. 매일 같은 시간에 문제를 푸는 이 루틴이 자연스러워졌다. 어제 Level 2를 시작했고, 오늘도 같은 레벨의 문제들을 지속적으로 풀었다.
반복되는 루틴 속에서 느끼는 것은 점진적인 향상이다. 문제를 푸는 속도도 빨라지고, 문제를 풀 때의 사고도 좋아지고 있는거 같다.
오늘의 Python 강의 주제는 표준 라이브러리 활용 방법이였다. 지금까지 배웠던 기본 문법을 벗어나, Python이 제공하는 강력한 도구들을 만나기 시작했다.
표준 라이브러리 vs 외부 라이브러리 두 가지를 구분해야 한다.
표준 라이브러리:
- Python을 설치할 때 자동으로 함께 설치되는 라이브러리
- 별도의 설치 없이 import로 바로 사용 가능
- 예: datetime, math, random, os 등
외부 라이브러리:
- pip install 같은 명령어로 별도 설치 필요
- 예: pandas, numpy, matplotlib 등
import의 두 가지 방식
# 방식 1: 전체 라이브러리 가져오기
import datetime
# 방식 2: 특정 함수/클래스만 가져오기
from datetime import date, time, datetime, timedelta
방식 2를 사용하면 필요한 것만 가져오므로 더 효율적이다.
datetime 라이브러리 - 날짜/시간 다루기
날짜와 시간을 다룰 때는 문자열이 아닌 날짜 데이터 타입을 사용해야 한다. 왜냐하면 "2025-11-12"에 일주일을 더할 때, 문자열로는 계산이 불가능하기 때문이다.
from datetime import date, time, datetime, timedelta
# 현재 날짜
d = date.today() # 2025-11-12
# 특정 시간
t = time(14, 30, 0) # 14:30:00
# 현재 날짜와 시간
dt = datetime.now() # 2025-11-12 11:38:01.519890
# 시간 간격
gap = timedelta(days=7, hours=3)
# 날짜 계산
print(dt - timedelta(days=7)) # 2025-11-05 11:38:01.519890
날짜 포맷 변환
날짜는 두 가지 형태로 변환할 수 있다.
# strftime: 날짜 → 문자 (포맷팅)
s = dt.strftime("%d/%m/%Y %H:%M:%S")
# 2025-11-12 11:39:08 → "12/11/2025 11:39:08"
# strptime: 문자 → 날짜 (파싱)
dt2 = datetime.strptime("2025-11-12 09:00:00", "%Y-%m-%d %H:%M:%S")
이 두 함수는 데이터 전처리에서 매우 중요하다. 엑셀이나 CSV 파일에서 읽어온 날짜 문자열을 실제 날짜 데이터로 변환해야 하기 때문이다.
math 라이브러리 - 수학 계산
import math
# 수학 상수
print(math.pi) # 3.141592653589793
print(math.e) # 2.718281828459045
# 기본 연산
print(math.sqrt(16)) # 4.0 (제곱근)
print(math.pow(2, 3)) # 8.0 (2의 3제곱)
# Python 기본 연산자와 비교
print(2 ** 3) # 8 (같은 결과, 하지만 math.pow는 부동소수점 반환)
random 라이브러리 - 난수 생성
import random
# 정수 난수
print(random.randint(1, 10)) # 1 ~ 10 사이의 정수
# 실수 난수
print(random.random()) # 0.0 ~ 1.0 (1.0 미포함)
# 범위와 간격을 지정한 난수
print(random.randrange(0, 10, 2)) # 0, 2, 4, 6, 8 중 하나
# 재현 가능한 난수 (seed 설정)
random.seed(12)
print(random.randint(1, 10)) # 5
print(random.randint(1, 10)) # 5 (같은 seed로 같은 결과)
머신러닝 모델의 재현성을 위해 seed를 설정하는 것이 중요하다. 같은 seed로 설정하면 같은 난수가 생성되므로, 결과를 재현할 수 있다.
os 라이브러리 - 파일 경로 및 폴더 조작
import os
# 현재 작업 디렉토리
print(os.getcwd())
# 파일/폴더 목록 조회
print(os.listdir('.'))
# 파일 존재 여부 확인
os.path.exists('file.txt')
파일을 읽거나 저장할 때, 경로를 올바르게 설정하는 것이 중요하다. 상대경로(현재 위치 기준)와 절대경로(전체 경로)를 구분해서 사용해야 한다.
표준 라이브러리의 의미
이 네 가지 라이브러리(datetime, math, random, os)는 데이터 분석에서 정말 자주 사용된다. 특히 datetime은 시계열 데이터를 다룰 때 필수다.
저녁에는 새로운 분야인 GIS(지리정보체계) 데이터분석 특강이 있었다.
GIS란 무엇인가?
GIS는 지리적 정보를 수집, 분석, 시각화하는 기술이다. 지도 위에 데이터를 표현하고, 위치 기반 분석을 수행한다.
처음 배웠을 때의 느낌은 "복잡해 보이면서도 재미있어 보인다"는 것이었다.
지금까지 배운 SQL, Python은 표 형식의 데이터(행과 열)를 다루었다. 하지만 GIS는 지도 위에 데이터를 표현한다. 경도, 위도, 거리, 지역 등 공간 정보를 포함한다.
데이터 분석의 완전히 새로운 차원이다.
특강이 계속 진행되면서 어떤 결과물이 나올지 궁금하다. 지도 위에 데이터 포인트들이 표현되고, 포인트 간의 어떤 관계가 있는지 상상이 되지 않는다...
GIS데이터와 금융 데이터와 결합되면 어떨까? 특정 지역의 고객 분포, 지역별 매출 패턴 같은 것들을 분석할 수 있을 것 같다.
18일차를 마무리하며....
오늘 학습 내용
- SQL 코드카타: Level 2 계속 진행
- Python 표준 라이브러리: datetime, math, random, os
- GIS 데이터분석 특강: 새로운 분야의 입문
Python의 표준 라이브러리를 배우면서 느낀 것은 "Python은 정말 많은 것을 제공한다"는 것이다. 별도 설치 없이도 이렇게 많은 기능들을 사용할 수 있다는 게 정말 놀랍다.
그리고 GIS라는 새로운 분야를 만나면서, 데이터 분석의 영역이 생각보다 훨씬 넓다는 것을 깨달았다.
월요일부터 수요일까지 3일을 보냈는데, 이미 많은 것을 배우고 경험했다. SQL 코드카타도 매일 꾸준히 진행 중이고, Python도 기초에서 실무 응용으로 빠르게 진행되고 있다.
한 주의 중반이 지났다. 내일도 같은 페이스로 나아가자.