Data Engineering

Data Engineering - csv, json 읽기week4-1(3-2)

Starters 2020. 9. 21. 18:01

기계가 읽을 수 있는 데이터

- 사람의 개입 없이 의미를 잃지 않으면서, 컴퓨터가 쉽게 읽을 수 있는 형식의 데이터

(CSV, JSON, XML)

- 인간이 읽을 수 있는 데이터

(PDF, PPT...)

 

1. CSV 읽기

csv

- 레코드 내의 각 필드가 콤마(쉼표)로 구분되어 있는 파일

- 각 레코드는 줄 바꿈 문자로 구분

- 스프레드시트와 데이터베이스에서 가장 일반적인 가져오기 및 내보내기 형식

- 콤마 대신 탭(Tap)도 가능

- 확장자 : .csv

- 엑셀에서 .csv 형식으로 읽고 저장할 수 있음

 

※ csv 모듈은 텍스트 파일의 내용을 구분자에 따라 잘라서 제공해주는 역할만 할 뿐

모든 필드의 값은 문자열 - 타입 변환 시, 이에 대한 책임은 항상 프로그래머에게 달려있음

 

 

WHO: http://bit.ly/life_expectancy_data

 

GHO | By category

 

apps.who.int

github :  

 

jackiekazil/data-wrangling

Code repository for Data Wrangling with Python (O'Reilly) - jackiekazil/data-wrangling

github.com

 

1. csv.reader()

1) csv module로 읽기

import csv
with open('data-text.csv', encoding='utf-8') as f: # f : file handler
  reader = csv.reader(f) # reader : csv reader object
  for row in reader: # -> iterate over lines
	print(row)

 

2) python standard library

https://docs.python.org/3/library/index.html File Formats / csv

 

with로 묶어준 뒤에 나가게 되면, 파일이 close됨

rows라는 리스트에 따로 저장하여 with문 밖에서 해당 데이터 출력가능

2. pandas.read_csv()

1) pandas module로 읽기

import pandas as pd
df = pd.read_csv('data-text.csv', encoding='utf-8') # encoding
df # Dataframe

 

2) API reference (pandas)

https://pandas.pydata.org/docs/reference/index.html Flat file

 

 

데이터 프레임이란

- 2차원 배열 구조(열과 행), 각각의 열은 시리즈 객체

- 열과 행이 사용하는 주소는 각각 행 인덱스(row index)와 열 이름(column name)

- 시리즈는 1차원 배열 구조(키와 값이 짝을 이루는 딕셔너리와 비슷한 구조)

 

시리즈 구조 및 딕셔너리

 

2. JSON 읽기

json

- 웹 프로그래밍 언어인 JS의 데이터 객체 표현 방식을 사용 -> 데이터 교환의 표준으로 삼은 데이터 표현 언어

- 파이썬의 딕셔너리와 매우 비슷

- XML을 대체하는 주요 데이터 형식

- 확장자: .json

- 컴퓨터 프로그램의 변수 값을 표현하는 데 적합

 

 

 

 

1. json.load()

json module로 읽기
import json
with open('data-text.json') as f:
	py_obj = json.load(f) # cf. csv
py_obj # python object -> type( )

2. pandas.read_json()

pandas module로 읽기

import pandas as pd
df = pd.read_json('data-text.json') # encoding : default is ‘utf-8’
df # pandas object -> type( )

 

 

 

다음주 실습 예

# 1990년도에 조사가 된 나라들 출력

import json

with open('data-text.json') as f:
	py_obj = json.laod(f)
    
for row in py_obj:
	if row.get('Year') == 1990: # 딕셔너리에 있는 값 가져오는 방법
    	print(row.get('Country'))