학습 순서
| 순서 | 주제 | 핵심 |
|---|---|---|
| 1 | 변수와 자료형 | 숫자, 문자열, 참/거짓 |
| 2 | 리스트와 딕셔너리 | 여러 값을 담는 두 가지 방법 |
| 3 | 조건문과 반복문 | if, for |
| 4 | 함수 | 코드를 이름 붙여 재사용 |
| 5 | 파일 읽고 쓰기 | CSV 열기 |
파이썬을 처음 본다면 위 다섯 가지만 알면 이 수업을 따라올 수 있습니다.
이 수업에서 자주 나오는 모양
리스트 안에 딕셔너리 — "표" 데이터의 기본
sales = [
{"region": "Seoul", "amount": 120},
{"region": "Busan", "amount": 80},
{"region": "Seoul", "amount": 50},
]
for row in sales:
print(row["region"], row["amount"])
엑셀 표 한 줄이 딕셔너리 하나, 표 전체가 리스트라고 생각하면 됩니다.
지역별 합계 구하기
이 수업 전체를 관통하는 질문이 "무엇별로 얼마인가" 입니다. 순수 파이썬으로 하면 이렇게 됩니다.
totals = {}
for row in sales:
region = row["region"]
totals[region] = totals.get(region, 0) + row["amount"]
print(totals) # {'Seoul': 170, 'Busan': 80}
다음 단계(Pandas)에서는 이걸 한 줄로 줄입니다. Spark에서도 모양만 다를 뿐 같은 일입니다.
CSV 파일 읽기
import csv
with open("data.csv", newline="", encoding="utf-8") as f:
for row in csv.DictReader(f):
print(row["name"], row["score"])
DictReader를 쓰면 한 줄이 딕셔너리로 들어옵니다.
조건에 맞는 것만 고르기
big = []
for row in sales:
if row["amount"] >= 100:
big.append(row)
같은 걸 한 줄로 쓰는 방법(컴프리헨션)도 있습니다. 읽을 줄만 알면 됩니다.
big = [row for row in sales if row["amount"] >= 100]
연습
- 학번·이름·점수가 든 CSV를 읽어서 평균 점수를 출력
- 점수가 80 이상인 학생만 골라 출력
- 위 두 작업을 함수로 만들어보기
다음 단계(Pandas)에서는 위 작업을 코드 2~3줄로 줄이는 방법을 배웁니다.