이렇게 공공데이터를 사용하면 한글깨지는 현상이 발생하였음.
export할 때 utf-8로 설정해도 결국 한글이 계속 깨지는 문제가 발생하였는데...
그냥 엑셀을 깔아서 하면 손쉽게 해결이 될테지만(방법은 구글링하면 잘 나옴) 귀찮기도 하고 이걸로 어떻게든 문제를 해결해보자!!! 하였음.
이처럼 표 설정하기에서 한글(mac os)로 설정해주면 됨
csv 파일로 변환해줄 때는 utf-8로 설정 후 변환
주피터 노트북에서도 잘 실행됨.
csv.reader()
: csv에서 데이터를 읽어옴csv.writer()
: csv파일에 데이터 저장
import csv #csv 모듈 불러오기
f = open('seoul.csv', 'r', encoding='cp949') #csv 파일을 open() 함수를 통해 열고 f(파일 핸들러)에 저장
data = csv.reader(f, delimiter=',') #f를 reader()에 넣어서 data라는 csv reader 객체 생성
print(data) #data 출력
f.close() #파일 닫기
f = open('seoul.csv', 'r', encoding='cp949')
: 'r' 즉, 'seoul.csv' 파일을 읽기모드(read)로 읽어오며, cp949(window 한글 인코딩 방식)으로 읽어와라 data = csv.reader(f, delimiter=',')
: 읽어온 파일은 delimiter(구분자)를 기준으로 저장import csv
f = open('seoul.csv')
data = csv.reader(f)
for row in data:
print(row)
f.close()
- 헤더(Header) : 데이터 파일에서 여러 가지 값들이 어떤 의미를 갖는지 표시하는 행. 보통 첫번째 줄에서 등장하며, 데이터의 속성을 설명함.
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data) #헤더 데이터 별도 저장
print(header)
f.close()
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data:
print(row) #헤더의 다음행부터 출력됨
f.close()
- 데이터 읽어오기
- 순차적으로 최고 기온 확인
- 최고 기온이 가장 높았던 날짜의 데이터 저장
- 최종 저장된 데이터 출력
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data:
row[-1] = float(row[-1]) # 기온을 실수로 변경
print(row)
f.close()
row[-1] = float(row[-1])
: 최고 기온 데이터는 행의 맨 마지막에 위치해 있으므로 row[-1]을 통해 접근이 가능함.(혹은 row[4]로 접근해도 됨)import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data:
if row[-1] == '':
row[-1] = -99 # 임의의 숫자를 넣어서 채워줌
row[-1] = float(row[-1])
print(row)
f.close()
import csv
max_temp = -100 # 최고 기온 값 저장할 변수
max_date = '' # 최고 기온이 가장 높았던 날짜 저장할 변수
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data:
if row[-1] == '':
row[-1] = -99
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)