- csv.reader(): CSV 파일에서 데이터를 읽어오는 함수
- csv.writer(): CSV 파일에 데이터를 저장하는 함수
전체 데이터 출력
import csv #csv 모듈을 불러옴
f = open('jinju.csv', 'r', encoding='cp949') #csv파일을 open()함수로 열어서 f(파일 핸들러라고도 부름)에 저장
data = csv.reader(f, delimiter=',') #f를 reader()함수에 넣어 data라는 CSV reader 객체를 생성
print(data)
f.close() #2에서 연 파일을 닫음
· encoding='cp949' : cp949라는 형식 (windows 한글 인코딩 방식)으로 읽어오라는 의미
· csv.reader(f, delimiter=',') : 읽어온 CSV 파일 데이터를 콤마(,)를 기준으로 분리해서 저장하라는 의미
→ 기본값이므로 생략 가능
데이터 한 줄씩 출력
import csv
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
for row in data:
print(row)
f.close()
헤더
헤더: 데이터 파일에서 여러 가지 값들이 어떤 의미를 갖는지 표시한 행
헤더를 별도로 저장하려면 next() 함수를 사용할 수 있음
next()함수: 첫 번째 데이터 행을 읽어오면서 데이터의 탐색 위치를 다음 행으로 이동시
import csv
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
print(header) # ['날짜', '지점', '평균기온(℃)', '최저기온(℃)', '최고기온(℃)']
f.close()
데이터의 첫 번째 행이 header 변수에 저장됨
진주에서 가장 더웠던 날 찾기
- 최고 기온 데이터는 숫자 값이 아닌 문자열이기 때문에, 크기를 비교할 수 없음
- 숫자로 다루려면 숫자 타입 데이터로 변환을 해주어야 함
- 최고 기온 데이터는 실수이므로 float()함수를 이용해 실수 데이터로 변환
import csv
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
for row in data:
row[-1] = float(row[-1])
print(row)
f.close()
리스트 맨 뒤에 있는 최고 기온 데이터가 실수 데이터로 변환됨
1973년 10월 15일 데이터가 출력된 이후 에러가 발생함. 에러가 발생한 위치의 CSV 파일을 확인해 보니
기온 데이터가 누락된 부분이 있어 오류가 발생
빈 값을 대체할 특정 값을 넣는 방법
import csv
f = open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
for row in data:
if row[-1]=="":
row[-1]=-999
row[-1] = float(row[-1])
print(row)
f.close()
빈 문자열이 있으면 그 자리에 최고 기온 값으로 나오기 힘든 값인 -999를 넣음
최고 기온이 가장 높았던 날 찾기
탐색과 비교의 과정을 거쳐야 함 → 기준값 설정 → 기준값과 새로운 값 비교 → 기준값보다 큰 값이면 기준값 업데이트
f=open('jinju.csv', 'r', encoding='cp949')
data = csv.reader(f)
header = next(data)
max_temp = -999 #최고 기온 값을 저장할 변수
max_date = '' #최고 기온의 날을 저장할 변수 (문자열 값이므로 빈 문자열로 초깃값 설정)
for row in data:
if row[-1]=="":
row[-1]=-999
row[-1] = float(row[-1])
if max_temp < row[-1]:
max_temp=row[-1]
max_date=row[0]
f.close()
print(max_date, max_temp) #1994-07-21 38.9
'데이터 분석' 카테고리의 다른 글
[데이터 분석] 다양한 형태로 시각화하기 (막대 그래프, 항아리 그래프) (0) | 2024.01.31 |
---|---|
[데이터 분석] 우리 동네 인구 구조 시각화하기 (2) | 2024.01.29 |
[데이터 분석] A열의 한글이 깨져 보일 때 해결 방법 (1) | 2024.01.29 |
[데이터 분석] 기온 변화 그래프 그리기 / 기온 데이터 다양하게 시각화하기 (0) | 2024.01.29 |
[데이터 분석] 데이터 시각화 - 그래프 그리기, 옵션 추가하기 (1) | 2024.01.28 |