2. csv, json

권나영·2020년 10월 10일

csv 읽어오기

기온 변화 자료 csv파일

import csv
f = open('seoul_weather.csv') # f: file handler
data = csv.reader(f) # csv reader 객체
for row in data:
    print(row)
f.close()

image

데이터 전처리(클리닝, 표준화, 정규화) : 기상청 자료에서 최고기온 찾는 과정에서 배워보자

1. 클리닝 - header 제거 (제일 위 필요없는 행)

header = next(data)

2-1. 표준화

위 데이터에서, 제일 마지막 열이 최고기온인데, 문제는 다 문자열형임. 따라서 실수화 해줘야함 (float)

2-2. 클리닝 - NULL값 제거

위 데이터에서, 제일 마지막 열이 최고기온인데, 이 중에 NULL값이 있다면, -999같이 나오기 힘든 온도로 대체하면 됨

🤞서울의 기온 자료(seoul_weather.csv) 읽어와서 최고 기온의 날짜, 온도 뽑아오기

import csv

f = open('seoul_weather.csv', encoding="utf-8")
data = csv.reader(f)
header = next(data)

max_temp = 0
max_date = ''

for row in data:
    if (row[-1]==''):
        row[-1] = -999
    else:
        row[-1] = float(row[-1])
    
    if (row[-1] > max_temp):
        max_date = row[0]
        max_temp = row[-1]
    print(row)
f.close()

print("날짜, 최고 기온 : {0}, {1}".format(max_date, max_temp))

EDA

시각화(그래프)등으로 보는 것

🤞🤞실습 : 서울, 인천 중 가장 추웠던 날은 언제였을까?

image
기온 변화 자료 csv파일

import csv

f=open('seoul.csv')
data = csv.reader(f)
seoul_list = []
header=next(data)
min_day=''
area = '서울'
min_temp = 100
for row in data:
    if row[-2] == '':
        row[-2] = 999
    else:
        row[-2] = float(row[-2])
        if (min_temp>row[-2]):
            min_temp = row[-2]
            if row[0] != '':
                min_day=row[0]
    print(row)
f.close()

f=open('Incheon.csv')
data=csv.reader(f)
header=next(data)
for row in data:
    if row[-2] == '':
        row[-2] = 999
    else:
        row[-2] = float(row[-2])
        if (min_temp>row[-2]):
            min_temp = row[-2]
            if row[0] !='':
                min_day=row[0]
            area = '인천'
    print(row)
f.close()

print("기상 관측 이래 최저 기온이 가장 낮았던 날은 {:s}로 {:s}로, {:.1f}도 였습니다.".format(area, min_day, min_temp))

csv 파일 불러오기

  1. csv module
import csv
with open('data-text.csv', encoding="utf-8") as f:
	reader = csv.reader(f)
    for row in reader:
    	print(row)
  1. pandas
import pandas as pd
df = pd.read_csv('data-text.csv', encoding="utf-8")
df

json 파일 불러오기

  1. json module
import json
with open('data-text.json') as f:
    py_obj = json.load(f)
py_obj
  1. pandas
import pandas as pd
df = pd.read_json('data-text.json')
df

🤞🤞 json 파일의 row 에서 'Year'이 1990인 country만 쭉 불러오기

import json

with open('data-text.json') as f:
    py_obj = json.load(f)
    
for row in py_obj:
    if row.get('Year') == 1990:
        print(row.get('Country'))

🤞🤞 실습 : json파일과 csv파일 불러오기

  1. 어떤 데이터파일들인지 확인해보기
import json
import csv
with open('users.json') as f:
    py_obj = json.load(f)
py_obj

with open('friendship_pairs.csv', encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

  1. 문제에서 요구하는 포맷으로 만들기
friendship_list = []

with open('friendship_pairs.csv', encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        friendship_list.append((int(row[0]), int(row[1])))
friendship_list

  1. 딕셔너리 만들기

🤞🤞 표현법이 중요

friendship = {user['id']: [] for user in py_obj}
friendship

for i, j in friendship_list:
    friendship[i].append(j)
    friendship[j].append(i)
friendship

✅ 전체 코드

import json
import csv

with open('users.json') as f:
    py_obj = json.load(f)
    
friendship_list = []

with open('friendship_pairs.csv', encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        friendship_list.append((int(row[0]), int(row[1])))
        
friendship = {user['id']: [] for user in py_obj}

for i, j in friendship_list:
    friendship[i].append(j)
    friendship[j].append(i)
friendship
profile
나영

0개의 댓글