앎을 경계하기

[가짜연구소3기] Data Engineer 58

[가짜연구소 3기] 데이터 엔지니어링 38 - Working with nested JSONs

주제 중첩 JSON 데이터를 다루는 방법에 대해 배웠다. 중첩된 JSON JSON은 키 : 값 쌍으로 된 데이터 구조를 가지고 있다. 값으로 객체를 가질 수 있기 때문에 JSON은 중첩된 구조를 갖기도 한다. pandas.io.json 을 사용해서 JSON의 중첩을 다룰 수 있다. json_normalize() : JSON 정규화를 사용하여 중첩된 데이터를 평면화하여 데이터 프레임으로 반환한다. 중첩된 속성 이름은 attribute.nestedattribute로 확인할 수 있다. 예제 import pandas as pd import requests from pandas.io.json import json_normalize #requests.get으로 데이터 가져오기 api_url = 'https://ap..

[가짜연구소 3기] 데이터 엔지니어링 37 - Introduction to APIs

주제 Requests를 사용하여 웹사이트의 데이터를 추출하는 방법과 json으로 응답받아 데이터프레임으로 로드하는 방법을 배웠다. Application Programming Interfaces(API) 흔히들 "API 문서 참고해라" 이런 말을 하는데, API가 정확히 무엇일까? 응용 프로그램 끼리 통신할 수 있도록 정의된 방법이다. 프로그래머가 API를 통해 응용프로그램에서 데이터를 가져올 수 있다. Requests 파이썬에서 requests 라이브러리를 사용하여 모든 URL에서 데이터를 주고 받을 수 있다. requests.get()으로 URL에서 데이터를 가져온다. requests.get() requests.get(url주소) 형태로 사용하며 유용한 파라미터를 사용할 수 있다. params : 매개..

[가짜연구소 3기] 데이터 엔지니어링 36 - Introduction to JSON

주제 JSON 파일에 대한 개념과 Pandas로 읽는 방법에 대해 배웠다. JSON JSON은 웹에서 데이터 전송을 하는 일반적인 형식이다. 테이블 형태가 아니라서 데이터를 더 유연하게 저장할 수 있다. 파이썬의 dictionary 타입처럼 속성-값 쌍을 포함한다. JSON 읽기 read_json() 으로 읽을 수 있다. dtype으로 구체적인 타입을 설정할 수 있다. JSON 데이터는 테이블 형태가 아니라서 다양하게 배치될 수 있기 때문에 orient키워드를 사용해서 레이아웃 플래그를 지정할 수 있다. 다양한 방향으로 JSON 읽기 import pandas as pd death_causes = pd.read_json('nyc_death_causes.json', orient = 'split') print..

[가짜연구소 3기] 데이터 엔지니어링 35 - Loading multiple tables with joins

주제 키를 통해 테이블을 결합하는 조인에 대해 배웠다. 테이블 결합하기 Key는 데이터베이스 레코드를 식별할 수 있는 고유한 값으로 이뤄진 것을 말한다. 키를 이용하여 여러 개의 테이블을 결합할 수 있다. 테이블 결합 예제 SELECT * FROM hpd311calls JOIN weather ON hpd311calls.created_date = weather.date; 위 예제는 hpd311calls의 created_date와 weather의 date 를 통해 두 테이블을 연결한다. 두 테이블을 연결할 키는 동일한 타입이어야 한다. 결합 방법은 아래의 그림을 보면 더 이해하기 쉽다. 결합과 집계 함께 사용하기 SELECT hpd311calls.borough, COUNT(*), boro_census.tot..

[가짜연구소 3기] 데이터 엔지니어링 34 - More complex SQL queries

주제 여러 함수를 사용하여 복합적으로 sql 쿼리를 작성하는 법에 대해 배웠다. DISTINCT 사용하기 pandas에서 고유값을 얻기 위해 unique를 사용하였다. SQL에서는 DISTINCT를 사용하여 고유한 값을 추출한다. SELECT DISTINCT 컬럼명 FROM 테이블명; 중복값 제거를 위해서는 다음과 같이 쿼리할 수 있다. SELECT DISTINCT * FROM 테이블명; 집계 함수 직접적으로 데이터베이스에 쿼리하여 집계함수를 사용할 수 있다. SUM, AVG, MIN, MAX 단일 컬럼의 집계 수행 SELECT AVG(컬럼명) FROM 테이블명; COUNT 쿼리 조건에 맞는 행 개수를 가져올 수 있다. #전체 행의 수 SELECT COUNT(*) FROM 테이블명; #컬럼의 고유 값 수..

[가짜연구소 3기] 데이터 엔지니어링 33 - Refining imports with SQL queries

주제SQL 쿼리문을 작성하여 데이터를 가져오는 방법에 대해 배웠다.열 선택하기SELECT 열 이름 FROM 테이블명; 으로 특정 컬럼을 지정해서 로드할 수 있다.pandas의 read_excel, read_csv에서 usecols와 비슷하다.SELECT date, tavg FROM weather;WHERE 절 사용하기Where 절을 사용해서 가지고 오고자 하는 데이터를 필터링해서 가져올 수 있다.숫자의 경우 =, >, ≥, 32;위 쿼리는 32보다 큰 tmax값을 가진 레코드를 전부 가져온다.문자열의 경우 =을 사용해서 문자열 일치 비교한다. 문자열은 대소문자를 구분한다.SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';SQL과 pandasimport pand..

[가짜연구소 3기] 데이터엔지니어링 32 - Introduction to databases

주제 관계형데이터베이스 파이프라인을 구축하는 법에 대해 배웠다. 관계형 데이터베이스 엔티티에 대한 데이터를 테이블로 구성한다. 각 레코드, 행은 엔티티의 인스턴스이다. 각 컬럼은 속성에 대한 정보이다. 테이블은 고유 키를 통해 테이블들을 연결시킬 수 있다. 데이터의 퀄리티 조정과 더 많은 데이터를 처리하고 동시 사용자를 지원한다. 각 컬럼에 구체적은 데이터 타입을 적용한다. SQL을 사용해 데이터베이스와 상호작용한다. 데이터베이스 연결 데이터베이스를 연결하는 방법을 만든다. SQL 또는 Pandas로 쿼리한다. 이 작업을 위해 SQLAlchemy 라이브러리를 사용한다. create_engine() 을 사용하면 데이터베이스 연결을 다룰 수 있다. 연결하기 위해서는 DB의 URL 주소가 필요하다. URL은 ..

[가짜연구소 3기] 데이터 엔지니어링 31 - Modifying imports: parsing dates

주제 Date and Time Data 일자와 시간은 파이썬 특수 유형인 datetime으로 저장한다는 것이다. Datetime은 여러 문자열로 표현될 수 있다. 날짜 시간이 문자열로 형식화되는 방법을 설명하는데 사용되는 공통 코드 세트이다. 판다스에서는 기본으로 datetime 데이터를 object로 읽는다. datetime 열을 지정하기 위해 parse_dates를 사용해서 datetime을 설정할 수 있다. parse_dates 컬럼 이름이나 숫자 목록을 전달한다. 2차원 배열도 가능하다. 각 키는 새 컬럼이름, 각 값은 구문 분석할 컬럼 목록으로 딕셔너리를 구성해서 사용할 수 있다. 위 데이터로 date를 다뤄보자. 표준 형식 date_cols = ['Part1StartTime', 'Part1En..

[가짜연구소 3기] 데이터 엔지니어링 30 - Modifying imports : true/false data

주제 열을 부울로 형 변환하고 사용자 정의 True/False 값 설정하는 방법, 부울 변환 시 고려사항에 대해서 배웠다. 이전까지는 주로 문자열, 숫자형 데이터를 다뤘다. 이번에는 부울 타입의 데이터에 대해서 다룬다. 부울 데이터 True/False 데이터 필터링 작업에 편리함 판다스에서 부울 데이터를 어떻게 해석할까? 위 엑셀파일을 판다스에서 읽고 타입을 확인하면 다음과 같다. 부울 타입으로 해석하지 않는다. 숫자로 해석하는 경우 True = 1, False = 0으로 매핑된다. read_excel 에 dtype 인수로 부울 컬럼을 지정하는 dictionary를 전달할 수 있다. 그러나 이렇게 타입을 설정하면 발생하는 문제가 있다. 판다스에서 0과 1이 False, True임은 인식하지만 애매한 것들..

[가짜연구소 3기] 데이터 엔지니어링 29 - Getting data from multiple worksheets

주제 다수의 스프레드 시트를 선택해 데이터프레임으로 만들고, 합치는 과정에 대해 배웠다. 다수의 시트 선택하기 read_excel()은 보통 엑셀파일의 첫 시트만 가져온다. sheet_name 인수(인덱스 또는 시트 이름)를 설정해서 특정 시트를 가져올 수 있다. 여러 개의 시트를 설정하면 여러 시트를 가져올 수 있다. read_excel()에 설정한 파라미터들이 가져오는 시트들에 모두 적용된다. 위처럼 두 개의 시트가 있다. 2017 시트를 가지고 오려면 다음과 같이 수행하면 된다. #숫자 인덱스로 표시하는 경우 0부터 시작 survey_data_sheet2 = pd.read_excel('fcc_survey.xlsx', sheet_name=1) survey_data_2017 = pd.read_excel..