-
Data Engineering - csv, json 읽기week4-1(3-2)Data Engineering 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'))
'Data Engineering' 카테고리의 다른 글
Data Engineering - DataFrame(pandas) 6-2 (0) 2020.10.12 Data Engineering - XML (0) 2020.09.28 Data Engineering - 데이터 랭글링 전과정 이해(week3-1) (0) 2020.09.14 Anaconda 가상환경 설정하기 (0) 2020.09.09 데이터 엔지니어링이란? 2020-2 / 2주차-1 (0) 2020.09.07