[데이터분석]1. 서울 기온분석하기

UkiUkhui·2022년 3월 17일
0

* mac Numbers에서 한글 깨짐

이렇게 공공데이터를 사용하면 한글깨지는 현상이 발생하였음.
export할 때 utf-8로 설정해도 결국 한글이 계속 깨지는 문제가 발생하였는데...
그냥 엑셀을 깔아서 하면 손쉽게 해결이 될테지만(방법은 구글링하면 잘 나옴) 귀찮기도 하고 이걸로 어떻게든 문제를 해결해보자!!! 하였음.

이처럼 표 설정하기에서 한글(mac os)로 설정해주면 됨

csv 파일로 변환해줄 때는 utf-8로 설정 후 변환

주피터 노트북에서도 잘 실행됨.

1. 서울 날씨 분석하기

1) csv 파일 읽기

  • 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() #파일 닫기

  • object at : 컴퓨터 내 csv 파일 저장 위치
  • f = open('seoul.csv', 'r', encoding='cp949') : 'r' 즉, 'seoul.csv' 파일을 읽기모드(read)로 읽어오며, cp949(window 한글 인코딩 방식)으로 읽어와라
  • data = csv.reader(f, delimiter=',') : 읽어온 파일은 delimiter(구분자)를 기준으로 저장

2) 데이터 읽기

import csv
f = open('seoul.csv')
data = csv.reader(f)
for row in data:
    print(row)
f.close()

  • 각 행 : []로 둘러싸여 있음 = 즉, 리스트임.(인덱싱, 슬라이싱 가능)
  • 각 행의 데이터 : ''로 둘러싸여 있음 = 즉, 데이터는 문자열(string).
  • 데이터 곳곳에 누락된 곳 존재 : 데이터는 완전무결하지 않음.

3) 헤더 저장

  • 헤더(Header) : 데이터 파일에서 여러 가지 값들이 어떤 의미를 갖는지 표시하는 행. 보통 첫번째 줄에서 등장하며, 데이터의 속성을 설명함.
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data) #헤더 데이터 별도 저장
print(header)
f.close()

  • next() : 데이터의 첫번째 행이 header라는 변수에 저장됨. 첫 번째 데이터행 읽어오면 데이터 탐색위치를 다음행으로 이동
import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data:
    print(row) #헤더의 다음행부터 출력됨
f.close()

2. 서울 날씨 질문하기

1) 서울 최고 기온이었던 날짜는?

  1. 데이터 읽어오기
  2. 순차적으로 최고 기온 확인
  3. 최고 기온이 가장 높았던 날짜의 데이터 저장
  4. 최종 저장된 데이터 출력

1. 데이터 읽어오기

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()

2. 순차적으로 기온 확인

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)

3. 최고 기온이 가장 높았던 날짜의 데이터 저장

4. 최종 저장된 데이터 출력

profile
hello world!

0개의 댓글