앎을 경계하기

Contents 356

Visualization - matplotlib histogram

히스토그램은 데이터를 파악하기 위해 매우 유용한 시각화 방법이다. 예시를 들어 정리하는 것이 편하다. 10명의 키를 조사한 결과가 아래와 같다. 사람 키 1 180 2 175 3 155 4 160 5 161 6 178 7 188 8 182 9 163 10 172 151~160, 161~170, 171~180, 181~190 범위로 데이터를 표현하고 싶을 때 히스토그램이 적절하다. 히스토그램의 "bin"은 데이터를 담을 바구니 수라고 생각하면 편하다. 그렇다면, y축은 각 바구니에 담긴 데이터의 수라고 할 수 있다. 위 예시에서는 bins = 4가 될것이다. heights = [180,175,155,160,161,178,188,182,163,172] plt.hist(heights, bins=4, edgec..

Data Science 2021.08.28

Visualization - matplotlib line chart, scatter chart

자주 사용하지만 블로그에 따로 정리해놓지 않아서 이번 데이터캠프 컨텐츠를 이용하기는 김에 정리해야겠다. 시각화를 하는 이유? - 데이터 분석을 위해 시각화가 필요하다. - 데이터 탐색을 위해 사용한다. - 새로운 Insight를 찾아 다른 사람들과 공유한다. matplotlib 사용해보기 import matplotlib.pyplot as plt year = [1998, 1999, 2000, 2001] pop = [8.19, 10.08, 12.54, 16.88] plt.plot(year, pop) plt.show() plot(x축, y축)을 하게 되면 다음과 같이 꺾은 선 그래프가 나온다. import matplotlib.pyplot as plt year = [1998, 1999, 2000, 2001] p..

Data Science 2021.08.28

[가짜연구소 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..

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

주제 데이터를 저장소에서 추출하는 방법에 대해 배웠다. 데이터 추출 데이터 처리에 적합하지 않은 영구 저장소의 데이터를 메모리로 추출하는 작업 영구 저장소 : Amazon S3 file, SQL Database 등 텍스트 파일에서 데이터 추출하기 비정형화된 일반적인 텍스트 파일 행 = 레코드, 열 = 속성인 플랫 파일 csv, tsv 파일 JSON 반정형 데이터 4개의 원자 데이터 타입 - 숫자, 문자열, 부울, 널 복합 데이터 유형 - 배열, 객체 Python의 dictionary와 매핑이 잘 된다. JSON은 웹 서비스에서 많이 사용된다. 웹에서의 데이터 추출 일반적으로 웹 브라우저에서 google을 검색하면 브라우저는 google 홈페이지 컨텐츠를 "요청"한다. google 서버는 페이지를 구성하는..

[가짜연구소 3기] 데이터 엔지니어링 - 17 Workflow scheduling frameworks

주제 워크플로우 스케쥴링이 필요한 이유와 관련 툴인 Airflow에 대해 배웠다. 앞선 강의에서 데이터베이스에서 데이터를 가져오는 방법과 병렬 컴퓨팅 프레임워크에 대해서 배웠다. 이 모든 작업을 통합하는 과정이 필요한데, 이번 장에서 배우는 워크플로우 스케쥴링 프레임워크를 사용하여 통합 작업을 조정할 수 있다. 예제 파이프라인 CSV 데이터를 추출하여 Spark에서 일부 레코드를 필터링하는 등의 처리를 하여 분석 데이터베이스에 데이터를 로드하는 예시가 있다. 매일 새로운 CSV 파일이 들어와 이 작업을 매일 수행해야한다고 생각해보자. 어떻게 수행할 수 있을까? 수동 작업하기 cron 스케쥴링 도구 활용하기 의존성 문제 중간에 다른 작업이 추가되어야 한다면? 전체적인 접근이 필요하고 간단한 도구로 처리하기..