앎을 경계하기

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

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

주제 엑셀파일의 데이터를 판다스의 데이터프레임으로 읽는 법에 대해 배웠다. 스프레드시트 엑셀 파일로도 잘 알려져 있음. 데이터 프레임과 마찬가지로 행,열로 구성된 데이터 셀과 테이블 정보를 구성한다. 플랫파일과 다르게 형식이나 공식 적용이 가능하다. 스프레드시트는 통합 문서에 여러 개가 있을 수 있다. 스프레드시트 로드 판다스에서 read_excel() 을 사용해서 스프레드시트의 데이터를 로드할 수 있다. 행과 열 선택해서 읽기 스프레드 시트에 생각하는 대로 곧바로 깔끔하게 데이터가 들어있지 않을 수 있다. 메타 데이터 같은 데이터가 헤더에 포함되어 있을 수 있다. read_excel()은 read_csv()와 유사하지만 다른 점들이 있다. nrows : 읽을 행의 수 제한 skiprows : 건너 뛸 ..

[가짜연구소 3기] 데이터 엔지니어링 27 - Handling errors and missing data

주제 플랫 파일을 판다스로 읽을 때 발생하는 흔한 문제들과 해결 방법에 대해 배웠다. Flat File 사용 시, 흔한 문제들 분석에 방해되는 잘못된 열 데이터 타입 결측값 판다스에서 읽을 수 없는 값 데이터 타입 판다스에서는 자동적으로 열의 데이터 타입을 결정한다. 위 예시에서 우편번호(ZIpcode)를 정수로 해석했다는 것을 알 수 있다. 그러나 우편번호는 '0'이라는 값을 다뤄야할 수도 있다. 그리고 수량이 아니기 때문에 문자열로 모델링된다. dtype을 사용하여 데이터 유형을 직접 설정할 수 있다. {컬럼 이름: 데이터 타입} 인 딕셔너리 형태로 인수를 설정한다. tax_data = pd.read_csv('us_tax_data_2016.csv', dtype={'zipcode':str}) 결측값 다..

[가짜연구소 3기] 데이터 엔지니어링 26 - Modifying flat file imports

주제 데이터의 양을 제한해서 읽어오는 방법에 대해 배웠다. 컬럼 이름을 설정하는 방법에 대해 배웠다. 앞 시간에 플랫 파일을 읽어 데이터프레임으로 로드하는 방법을 배웠다. 플랫 파일을 읽을 때, 전부가 아니라 일부만 읽어서 사용해야하는 경우도 있을 것이다. 오늘은 로드할 데이터의 양을 제한하는 방법에 대해 배운다. 예시 a.csv파일에 저장된 데이터가 180000개의 행과 200개의 열로 이뤄져있다. 만약 이 데이터를 전부 읽을 때 컴퓨팅 자원이 넉넉하다면 쉽게 처리할 수 있겠지만, 필요한 컴퓨터 자원이 부족한 경우 작업을 정상적으로 진행할 수 없게된다. 컬럼 제한하기 usecols 사용하기 가져올 열 이름 또는 열 번호를 사용할 수 있다. col_names = ['STATEFIPS', 'STATE', ..

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

주제 판다스의 기본 개념과 플랫파일을 읽어 데이터프레임으로 로드하는 것을 배웠다. Pandas판다스를 사용하면 데이터를 쉽게 로드, 조작할 수 있고 분석과 시각화가 가능하다.DataFrames판다스는 데이터프레임 중심이다.데이터프레임은 행과 열로 구성된 2차원의 데이터 구조이다.행은 인덱스이고 열은 각 레이블이 지정되어 있다.수동으로 데이터프레임을 만들 수 있지만, 여러 포맷의 파일을 읽어서 데이터프레임으로 로드하는 것도 가능하다.Flat Files간단하고 구성이 쉽다.서식이 없는 일반적인 텍스트로 저장된다.선택한 구분 기호로 열 값을 구분한다.대표적인 예로 CSV 파일은 콤마(,)로 구분된 파일이다.import pandas as pd tax_data = pd.read_csv("CSV 파일 경로"sep ..

[가짜연구소 3기] 데이터 엔지니어링 - 24 Scheduling daily jobs

주제 배운 내용을 전체적으로 합쳐봤다. ETL(추출,변환,로드), 스케쥴링 등록까지 해봤다. 앞서 한 내용들 강의 데이터와 평가 데이터 추출 프로그래밍언어가 저장되어 있는 programming_language 컬럼의 결측값 처리하기 강의 당 평균 평점 집계 함수 만들기 user_id와 course_id 결합하여 평가하지 않은 강의와 쌍을 만든다. 강의 추천을 위한 계산하기 Postgres에 로드하기 추천 작업을 했던 제품에서 테이블을 사용한다. 매일 업데이트한다. 로딩 단계 #pandas dataframe에서 sql 테이블에 작성한다. #테이블 이름, 데이터베이스 엔진, 이미 테이블이 존재하는 경우 처리방법 recommendations.to_sql( "recommendations", db_engine, ..

[가짜연구소 3기] 데이터 엔지니어링 - 23 From ratings to recommendations

주제 평가 등급을 사용한 추천 시스템 전략 세우는 방법에 대해 배웠다. 추천 테이블 user_id : 사용자 아이디 course_id : 강의 아이디 rating : 평가 예측 - 수강 전 사용자가 해당 강의에 줄 평가 점수를 추정한다. 상식 기반 데이터 변환 Course 데이터와 Rating 데이터를 통해 추천하기 좋은 3가지 강의를 추정하는 것이다. 이전 시간에 각 코스의 평균 평가 점수를 집계했다. 이 집계 데이터를 통해 높은 등급의 코스 추천이 가능해진다. 사용자가 배우는 프로그래밍 언어로 된 과정 추천 2개의 SQL로 진행되는 강의를 듣기 때문에 이와 관련된 강의를 추천할 수 있다. 사용자가 아직 평가하지 않은 강의 추천 위 테이블처럼 user_id와 course_id 데이터 조합이 rating..

[가짜연구소 3기] 데이터 엔지니어링 - 22 Course rating

주제 배운 모든 것을 활용하여 DataCamp의 코스등급 사례 연구를 진행함. 데이터캠프의 등급 평가 데이터캠프의 강의의 각 챕터가 끝나면 아래와 같이 사람들이 특정 과정을 평가할 수 있다. 이런 등급데이터는 추천 시스템에서 사용하기 적합하다. 평가 데이터를 사용한 추천 평가 데이터를 얻는다. 데이터를 정리하고 최고 추천 코스를 계산한다. 매일 다시 계산해서 대시보드에 코스를 표현한다. 이 과정은 데이터 과학자와 데이터 엔지니어의 협력이 필요하다. 데이터 과학자는 추천 시스템에 대한 방식을 담당하고 데이터 엔지니어는 일정에 따라 권장 사항을 업데이트하는 안정적인 시스템을 만들기 위해 모든 것을 맞춰야한다. ETL 과정 위 과정을 ETL 과정으로 보면 다음과 같다. 데이터 추출은 datacamp_appli..

[가짜연구소 3기] 데이터 엔지니어링 - 21 Putting it all together

주제 ETL을 하나로 합치고 스케쥴러에 등록하는 과정에 대해 배웠다. 앞에서 Extract, Transformation, Load에 대해 배웠다. 이제 이 ETL을 하나로 합치는 과정에 대해 배운다. ETL 작업을 하나의 함수로 캡슐화하는 것이 중요하다. ETL 기능이 특정 시간에 실행되는지 확인하기 위해 Airflow를 사용한다. Airflow는 DAG를 사용하여 스케쥴러를 구현한다. schedule_interval의 인자는 다음의 크론 표현식으로 사용한다. DAG 정의 파일 airflow의 pythonOperator를 사용하여 dag를 설정하고 etl 함수를 등록해준다. set_upstream과 set_downstream이 있을 수 있는데, set_upstream은 wait_for_this_task가..

[가짜연구소 3기] 데이터 엔지니어링 - 20 Load

주제 ETL의 Load에 대해서 배웠다. 분석용, 애플리케이션용 데이터베이스의 특징에 대해 배웠다. 분석을 위한, 또는 애플리케이션 데이터베이스 분석용 데이터베이스와 애플리케이션 데이터베이스는 명확히 구분된다. 분석 데이터베이스 복잡한 집계쿼리가 자주 발생하기 때문에 이를 최적화해야한다. 온라인 분석처리(OLAP)을 위해 데이터베이스를 최적화한다. column-oriented라서 열 단위로 데이터를 저장한다. 분석에서는 컬럼의 하위 집합에 대한 쿼리가 대부분이다. 행 지향 시스템에서는 각 행에 대해서 사용하지 않는 컬럼을 스킵해야하는 과정이 필요하다. 병렬화에 적합하다. 애플리케이션 데이터베이스 초당 많은 트랜잭션이 발생하는 것을 최적화해야한다. 온라인 트랜잭션(OLTP)를 위해 데이터베이스를 최적화한다..

[가짜연구소 3기] 데이터 엔지니어링 - 19 Transform

주제 ETL의 두번째 단계 Transform에 대해 배웠다. 변환 작업의 종류 하나의 레코드가 있다. 데이터 엔지니어가 할 수 있는 변환 작업의 예시를 들면, 속성 선택하기 (ex: email) 코드 변환하기 (ex: New York → NY) 데이터 유효성 검증 (ex: created_at 속성의 날짜 값이 포함되지 않는 경우 데이터 삭제) 여러 개의 컬럼으로 나누기 (ex: email 데이터의 username부분과 domain 부분으로 나눌 수 있음) 이 작업은 Pandas 라이브러리로 쉽게 적용 가능하다. customer_df split_email = customer_df.email.str.split('@', expand=True) customer_df = customer_df.assign( use..