데이터 처리: 리스트, 딕셔너리, Pandas의 활용법
언제 사용하나?
- 로그 데이터 분석, 사용자 정보 관리, 웹 스크래핑 결과 정리 등
- CSV, 엑셀, API 데이터를 다룰 때 필수
기본 내장 타입: 리스트와 딕셔너리
리스트 예제
scores = [87, 92, 78, 90]
high_scores = [s for s in scores if s > 85]
print(high_scores) # [87, 92, 90]
딕셔너리 예제
students = {"Alice": 88, "Bob": 76, "Charlie": 93}
passed = {k: v for k, v in students.items() if v > 80}
Pandas로 대량 데이터 처리
import pandas as pd
df = pd.read_csv("students.csv")
top_students = df[df["score"] > 85]
print(top_students.sort_values(by="score", ascending=False))
실무 적용
- 웹 크롤링 후 정제된 데이터 분석
- 보고서용 집계표 자동 생성
- AI 모델 학습 데이터 준비
비동기 프로그래밍 (Asyncio)
언제 사용하나?
- API 다수 호출 시 대기 시간 줄이기
- 채팅 서버, 웹소켓 등 실시간 통신 처리
- 자동화 봇, 크롤러에 유용
핵심 문법: async, await, asyncio
기본 구조
import asyncio
async def fetch_page(url):
print(f"{url}에서 데이터 가져오는 중...")
await asyncio.sleep(1) # 비동기 대기
return f"{url} 완료"
async def main():
urls = ["site1.com", "site2.com", "site3.com"]
tasks = [fetch_page(u) for u in urls]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
실무 활용
- 웹 크롤링 자동화 (BeautifulSoup + aiohttp)
- 대규모 비동기 테스트 자동화
- Discord 봇, Telegram 봇 개발
파일 입출력 (File I/O)
언제 사용하나?
- 로그 저장, 사용자 기록 남기기
- CSV/JSON 파일 저장 또는 불러오기
- 텍스트 전처리 작업
파일 읽고 쓰기
쓰기
with open("log.txt", "w", encoding="utf-8") as f:
f.write("작업 시작\n")
읽기
with open("log.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
print(line.strip())
실무 예시
- 서버 로그 자동 수집
- 사용자 통계 파일 저장
- 엑셀 → CSV 변환 자동화
데코레이터 (Decorator)
언제 사용하나?
- 함수 호출 전후로 로깅, 인증, 시간 측정 기능 추가
- 코드를 깔끔하게 유지하고 DRY 원칙을 적용할 때
데코레이터 만들기
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"{func.__name__} 실행 시간: {time.time() - start:.2f}초")
return result
return wrapper
@timer
def process():
time.sleep(1)
print("작업 완료")
process()
실무 적용 예시
- 함수 실행 시간 측정 (성능 최적화)
- 사용자 인증 체크 데코레이터 (웹 개발)
- 캐시 활용 (LRU 캐시, functools 사용)
제너레이터 (Generator)
언제 사용하나?
- 수천만 개의 데이터처럼, 한 번에 불러오기 어려운 대용량 처리
- 중간 결과만 필요한 경우 빠르게 처리 가능
기본 예제
def count_up_to(max):
count = 1
while count <= max:
yield count
count += 1
for num in count_up_to(5):
print(num)
실무 사용 예시
- CSV 한 줄씩 읽기 (
csv.reader
) - 실시간 데이터 스트리밍 처리
- 머신러닝 배치 생성기 (데이터셋의 순차 전송)
컨텍스트 매니저 (Context Manager)
언제 사용하나?
- 파일, DB, 네트워크 연결 해제를 자동으로 처리하고 싶을 때
- 예외 발생 여부와 관계없이 자원 해제를 보장하고 싶을 때
기본 사용: 파일 처리
with open("example.txt", "w") as f:
f.write("자동으로 닫힘")
사용자 정의 컨텍스트 매니저
class ManagedConnection:
def __enter__(self):
print("연결 시작")
self.resource = "DB 연결"
return self.resource
def __exit__(self, exc_type, exc_val, traceback):
print("연결 종료")
with ManagedConnection() as conn:
print(conn)
실무 활용
- 데이터베이스 트랜잭션 관리
- 로그 파일 자동 저장 및 닫기
- 외부 라이브러리(API) 연결 자원 정리
이 문법들을 언제, 어떻게 써야 할까?
문법 | 사용 시기 | 실무 예 |
---|---|---|
데이터 처리 | 파일/웹/DB 데이터 분석 | Pandas로 분석 보고서 자동화 |
비동기 처리 | API 호출, 크롤링 | 네이버 뉴스 비동기 수집 |
파일 I/O | 데이터 저장/로드 | 로그 기록, 백업 저장 |
데코레이터 | 함수 확장, 코드 유지 | 로깅, 성능 체크 데코레이터 |
제너레이터 | 대용량 데이터 처리 | 스트리밍 로그 분석 |
컨텍스트 매니저 | 자원 자동 정리 | DB 트랜잭션, 파일 안전 닫기 |
정리 : 고급 문법을 활용하자!
위에서 소개한 6가지 문법은 파이썬의 유연성과 강력함을 가장 잘 보여주는 도구입니다.
단순히 문법을 암기하는 것이 아니라, 문제를 어떻게 해결할 수 있는가?라는 관점으로 접근해야 실력이 향상됩니다.