"내가 최고야"라고 단정하고 하나씩 비교하면서 최댓값 찾기
데이터 분석 과제의 기본 흐름
수업에서 배운 데이터 분석 과제의 흐름은 크게 3단계였다.
- 데이터 불러오기
- 데이터 가공하기
- 데이터 분석 후 결과 도출하기
이번 실습에서는 이 흐름을 아주 기초적인 형태로 경험했다.
CSV 파일을 불러오고, 각 행의 마지막 열에 있는 기온 데이터를 하나씩 읽어서 그중 가장 큰 값을 찾는 작업이었다.
단계별 코드 설명
1. CSV 라이브러리 불러오기
CSV 파일은 엑셀 데이터처럼 쉼표로 구분된 텍스트 파일이다.
파이썬에서는 이 파일을 쉽게 다루기 위해 csv 라이브러리를 사용한다.
import csv
이 한 줄이 의미하는 것은 단순하다.
"이제 CSV 파일을 읽고 분석할 준비를 하겠다."
2. 파일 열기: with open()
CSV 파일을 읽으려면 먼저 파일을 열어야 한다.
with open("test.csv", "r", encoding="utf-8", errors="ignore") as file:
pass
| 인자 | 설명 |
| "test.csv" | 읽을 파일 이름 |
| "r" | 읽기 모드 |
| encoding="utf-8" | 한글이 깨지지 않게 처리 |
| errors="ignore" | 인코딩 오류가 있어도 무시하고 진행 |
pass는 "여기에 앞으로 코드가 들어갈 예정이지만 아직 작성하지 않았다"는 의미다.
자바에서 메서드 뼈대만 먼저 만들어두는 느낌과 비슷하다.
3. csv.reader()로 한 줄씩 읽을 준비하기
파일을 열었다면 이제 그 안의 내용을 읽어야 한다.
with open("test.csv", "r", encoding="utf-8", errors="ignore") as file:
reader = csv.reader(file)
reader는 단순한 값이 아니라 파일 데이터를 읽어주는 도구 역할을 하는 객체다.
자바에서 memberDAO.selectAll(dto)를 호출해서 데이터를 꺼내오는 것처럼, csv.reader(file)이 CSV 데이터를 한 줄씩 가져올 준비를 해주는 느낌이다.
4. 헤더 건너뛰기
CSV 파일의 첫 줄은 보통 데이터가 아니라 열 이름이다.
날짜,지점,평균기온,최고기온
2024-01-01,서울,1.2,5.7
2024-01-02,서울,0.8,4.9
실제 분석 대상이 아니므로 먼저 읽고 건너뛰어야 한다.
header = next(reader)
이후 반복문에서는 진짜 데이터만 다루게 된다.
데이터 분석에서는 분석할 데이터와 아닌 데이터를 구분하는 것이 중요하다.
5. 최고 기온 찾기 아이디어
최고 기온을 찾는 방법은 생각보다 단순하다.
- 먼저 하나의 기준값을 정한다
- 이후 데이터를 하나씩 보면서
- 현재 최고값보다 더 크면 바꾼다
수업에서는 이 개념을 "내가 최고야"라고 먼저 단정하고 계속 비교한다는 느낌으로 설명했다.
max_value = 0
이 한 줄은 "일단 지금 최고값은 0이라고 정하고 시작하겠다"는 의미다.
6. 반복문으로 데이터 하나씩 확인하기
for row in reader:
print(row[-1])
- row : 한 줄 전체
- row[-1] : 그 줄의 마지막 열 값
만약 최고 기온이 CSV의 마지막 열에 있다면, row[-1]로 최고 기온을 꺼낼 수 있다.
7. 문자열 → 숫자 형변환
CSV 파일에서 읽은 값은 겉으로 숫자처럼 보여도 사실은 문자열 (string) 이다.
예를 들어 "27.3"은 숫자가 아니라 문자열이다.
비교를 하려면 반드시 숫자로 바꿔야 한다.
value = float(row[-1])
자주 하는 실수
value = float(row[-1])
if max_value < row[-1]: # row[-1]은 여전히 문자열
max_value = row[-1]
형변환한 value를 사용하지 않고 다시 문자열인 row[-1]로 비교하는 실수를 주의해야 한다.
올바른 비교는 아래와 같다.
if max_value < value: # 숫자형으로 비교
max_value = value
최종 코드
import csv
file_name = "test.csv"
with open(file_name, "r", encoding="utf-8", errors="ignore") as file:
reader = csv.reader(file)
header = next(reader) # 첫 줄(헤더) 건너뛰기
max_value = 0
for row in reader:
print(row[-1]) # 마지막 열 출력
value = float(row[-1]) # 문자열을 실수형으로 변환
if max_value < value:
max_value = value
print("최종: " + str(max_value))
코드 흐름 요약
| 단계 | 코드 | 역할 |
| 1 | import csv | CSV 라이브러리 불러오기 |
| 2 | open(file_name, "r", ...) | 파일 읽기 모드로 열기 |
| 3 | csv.reader(file) | 행 단위로 읽을 준비 |
| 4 | next(reader) | 헤더 (제목 줄) 건너뛰기 |
| 5 | max_value = 0 | 최고값 초기화 |
| 6 | for row in reader | 각 행 순회 |
| 7 | float(row[-1]) | 마지막 열 값을 숫자로 변환 |
| 8 | if max_value < value | 더 크면 최고값 교체 |
| 9 | print("최종: " + str(max_value)) | 결과 출력 |
이번 실습에서 배운 점
1. 데이터는 바로 분석할 수 있는 형태가 아니다
CSV 파일에 숫자가 들어 있어도 실제로 파이썬에서 읽으면 문자열로 들어온다.
데이터 분석은 분석 가능한 형태로 가공하는 과정이 반드시 필요하다.
2. 헤더와 실제 데이터는 구분해야 한다
헤더를 제외하지 않으면 분석이 꼬일 수 있다.
더 큰 데이터셋을 다룰 때도 반드시 필요한 습관이다.
3. 비교 로직은 생각보다 중요하다
"최고값 찾기" 자체는 단순해 보이지만, 막상 코드를 쓰다 보면 다음을 정확히 생각해야 한다.
- 어디를 비교할지
- 어떤 자료형으로 비교할지
- 초기값을 무엇으로 둘지
아주 기초적인 실습이지만, 반복문 + 조건문 + 자료형 처리가 모두 들어 있는 과제였다.
복잡한 라이브러리를 쓰지 않아도 파이썬 기본 문법만으로 충분히 데이터를 다룰 수 있다는 점에서 좋은 입문 과제였다.
이번 실습의 핵심 정리
- csv.reader()로 CSV 파일을 한 줄씩 읽는다
- next(reader)로 헤더를 건너뛴다
- row[-1]로 마지막 열 값을 가져온다
- float()로 숫자형으로 변환한다
- 반복문과 조건문으로 최고값을 찾는다
'수업 복습' 카테고리의 다른 글
| CSV 데이터 시각화 실습 (0) | 2026.03.18 |
|---|---|
| 데이터 시각화 기초 실습 및 프로젝트 적용 (0) | 2026.03.17 |
| Python 실습 과제 — 숫자 존재 여부 확인 문제 풀이 (0) | 2026.03.12 |
| Python 실습 과제 정리 (0) | 2026.03.11 |
| Python 기초 복습 (0) | 2026.03.11 |