본문 바로가기
반응형

🌿 Data Engineering58

🧾대용량데이터 읽기 속도비교(read file, pandas, pyarrow) 처음으로 10만건 정도 되는 데이터를 다루어볼 수 있는 기회가 생겼다. 대용량데이터는 처음이다보니 데이터를 읽는 것부터 오래걸렸다.. 그래서 데이터를 읽기 위해 여러가지 방법을 시도해보았고, 그 결과들을 비교해보려고 한다! Read CSV file file로 읽어서 df로 저장하기 내가 가장 처음 시도한 방법이다. 별다른 생각없이 그냥 일반적으로 CSV 파일을 읽어오려고 했다. with open file로 읽어서 df로 저장하기 비슷한 방법이지만 with open으로도 파일을 읽어올 수 있었다. 아무래도 line마다 읽다보니 약간 시간이 더 걸리는듯? Pandas read_csv로 읽어서 df로 저장하기 어차피 dataframe을 사용할꺼라면 그냥 pandas의 read-csv를 사용하는게 더 나을지도?.. 2021. 9. 2.
대용량데이터 빠르게 DB에 넣기(bulk insert) django 프로젝트를 하면서 데이터를 db에 저장해야할 일이 생겼다. 그냥 일반적인 데이터라면 별다른 이슈가 없었겠지만, 프로젝트의 목적은 10만건정도 되는 대용량 데이터를 다루어보는 것이다. 그래서 보통과 다르게 빠르게 db에 insert할 수 있는 방법은 없는지 찾아보다가 알게 된 내용을 기록한당! 하지만, 결론적으로 이런 대용량 데이터는 이렇게 막연하게 RDB에 넣으면 안된다!!! BULK INSERT란? MYSQL에서 대량으로 INSERT를 수행하게 해주는 SQL문. 예를 들면 이렇게 3줄로 나오는 INSERT를 한줄로 수행할 수 있다. # 일반 INSERT insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c).. 2021. 8. 29.
추천시스템04. 잠재요인 협업필터링(latent factor collaborative filtering) 구현 잠재요인 협업 필터링 (latent factor collaborative filtering) 행렬분해(Matrix Factorization)를 기반으로 사용한다. user-item 행렬 데이터를 이용해 잠재요인을 찾아낸다. 즉 user-item 행렬을 user-잠재요인, item-잠재요인 행렬로 분해는 것이다. 그래서 전체 사용자-아이템(행렬 R)에서 나온 값을 기반으로 잠재요인이 값을 매길 수 있게 된다. 그리고 이 값을 이용해서 사용자가 평가하지 않은 콘텐츠의 점수를 예측하는 것이다. 잠재요인 필터링은 저장공간을 훨씬 줄일 수 있다. 금까지 구현해본 추천시스템 방식중에서 가장 많이 사용된다. 목적 : 잠재요인 협업필터링으로 사용자가 본 영화와 유사한 영화를 추천해준다 데이터셋 : https://www.. 2021. 8. 27.
추천시스템03. 아이템 기반 협업 필터링 (collaborative filtering) 구현 협업 필터링(collaborative filtering) 사용자와 item간의 rating을 이용해서 사용자끼리 '유사도'를 찾는 방식. 특정 사용자와 유사한 사용자들이 남긴 평점, 상품구매 이력 등 행동양식 기반으로 '예측'해서 '추천'해준다. 그래서 item을 얼마나 좋아할 것인지 수치적으로 예측한다. 협업필터링의 2가지 유형 최근접 이웃기반 필터링 (nearest neighbor collaborative filtering) 잠재요인 기반 필터링 (latent factor collaborative filtering) 2.1 최근접 이웃기반 필터링 (nearest neighbor collaborative filtering) 사용자-아이템 행렬에서 사용자가 아직 평가하지 않은 아이템을 예측하는 것이 목표.. 2021. 8. 27.
추천시스템02. 콘텐츠기반 필터링(content based filtering) 구현 콘텐츠 기반 필터링(content based filtering) 사용자가 특정 아이템을 선호하는 경우, 그 아이템과 '비슷한' 콘텐츠를 가진 다른 아이템을 추천해주는 방식 굉장히 단순한 아이디어. 요즘엔 자주 사용하지 않는다. 예를 들어 사용자가 a가 itemA 영화에 높은평점을 주었을떄, 그 영화가 스릴러 영화고, 봉준호 감독이라면 이와 깉이 봉준호 감독의 다른 스릴러 영화를 추천해주는 것이다. 데이터셋 : https://www.kaggle.com/tmdb/tmdb-movie-metadata?select=tmdb_5000_movies.csv 목적 : 콘텐츠 기반 필터링으로 사용자에게 비슷한 영화를 추천해준다 1. 데이터준비 2. 데이터전처리 사용할 컬럼 정리 vote_averages(평점평균), vot.. 2021. 8. 26.
추천시스템01. 추천 시스템(Recommendation)이란? 유형 알아보기 이전 프로젝트에서 거리기반 알고리즘을 이용해서 음악을 추천해주는 프로젝트를 진행했다. 가장 단순하고 쉽게 유사도를 계산했는데, 어느정도 유사한 결과가 나와서 엄청 신기했다. 그래서 추천알고리즘을 더 알아보고 싶었고, 또한 다양한 데이터를 다루어보고 싶었다. 해보고 싶은 나만의 과제? 처럼 keep해두고 있던것 중 하나였는데 시간이 남아서 한번 도전~! 추천 시스템(Recommendation)이란? 추천 시스템을 통해 사용자의 취향을 파악하고, 그 취향에 따라 상품 등을 추천해줄 수 있다. 그래서 사용자가 해당상품을 구매할 확률이 높아져서 친사용자이며 친기업 서비스가 될 수 있는 강력한 시스템. 대표적으로 유튜브나 왓챠,넷플릭스에서 적용하고 있는 추천시스템, 나도 몰랐던 내 취향을 알려준다는 점에서 소름돋.. 2021. 8. 26.
[Pandas] 가상 쇼핑몰 고객주문 데이터 전처리2 - 국가별,월별,요일별,t시간대별 매출 프로젝트(?)를 하면서 pandas를 계속 썼지만, 쓰던 함수만 쓰고 계속 검색하다보니 그렇게까지 익숙한 편은 아니였다. 그래서 개인적으로 다양한 데이터를 가지고 pandas를 더 공부해보고자 시작하는 글~! 가상쇼핑몰 고객주문 데이터 https://archive.ics.uci.edu/ml/datasets/Online+Retail 온라인 리테일 사이트의 2010년 12월부터 2011년 12월까지의 데이터 -> 약 500,000건 (꽤 많아보인다!) 1. 데이터불러오기 및 확인 앞에서 한번 처리하고 난 후 csv로 떨군 그 파일을 가져와서 사용한다. 2. 국가별 매출 groupby(기준컬럼) = 그룹화하고, sum() ['컬럼명] = 그룹화한 상태에서 집계함수를 수행하고, sort_valeus() = va.. 2021. 8. 24.
[Pandas] 가상 쇼핑몰 고객주문 데이터 전처리1 - null처리 및 타입변경 프로젝트(?)를 하면서 pandas를 계속 썼지만, 쓰던 함수만 쓰고 계속 검색하다보니 그렇게까지 익숙한 편은 아니였다. 그래서 개인적으로 다양한 데이터를 가지고 pandas를 더 공부해보고자 시작하는 글~! 가상쇼핑몰 고객주문 데이터 https://archive.ics.uci.edu/ml/datasets/Online+Retail 온라인 리테일 사이트의 2010년 12월부터 2011년 12월까지의 데이터 -> 약 500,000건 (꽤 많아보인다!) 1. 데이터불러오기 및 확인 컬럼명파악 컬럼명 설명 invoiceNo 주문 번호 StockCode 아이템 아이디 Description 상품 정보 Quantity 상품 주문 수량 InvoiceDate 주문 일자, 시간 UnitPrice 상품 가격 Customer.. 2021. 8. 24.
애자일(Agile) 방법론- 스크럼(Scrum) VS 칸반(Kanban) 데이터팀은? Waterfall VS Agile 폭포수 모델(waterfall model) 전통적인 방법으로 [요구사항분석->기획->디자인->개발->테스트->출시] 순서대로 진행하는 방식 마치 폭포가 떨어지는식으로 순차적인 단계를 밟으며 진행 하지만,이 방식대로 진행할 경우 수정하기가 어렵다. 하나의 단계가 끝나야 다음단계로 넘어갈 수 있어서, 피드백을 즉각즉각 반영할 수 없다. 보통 현실에선 요구사항 분석 및 기획단계에서 모든걸 100% 예상할 수가 없다. 그래서 수정을 해야할 경우 다시 요구사항분석->기획->디자인->개발 이 흐름을 기다려야한다. 결국 제대로 이슈들이 처리되지 않은채 엉키게 되면 코드품질도 떨어지고, 요구사항도 만족하지 못한 결과로 이어짐 애자일(Agile) 방법론 전통적인 방법론 보다 조금더 유연.. 2021. 8. 16.
ETL ELT 차이 | 요즘엔 ETL에서 ELT로 흐름이 바뀌고 있다?@! ETL이란? Extract, Transform, Load 의 앞글자를 딴 용어인데, 여러가지 데이터소스에서 추출(Extract)하고, 데이터를 원하는 형태로 변형(Transform)하고, DW로 적재(Load)하는 과정. 즉, 데이터소스에서 가져온 rawdata로 데이터웨어하우스에 바로 저장할 수 없으니 ETL과정이 필요하다. 핵심은 Tranform하는 단계. 비즈니스 또는 분석용도에 맞춰 데이터를 잘 정제해야한다. 당연히 데이터크기가 크면 클수록, Tranform하는 시간도 오래걸린다. ETL파이프라인이 설계된 후에는 1일1회 등 방식으로 업데이트된 내용을 다시 가져와서 새로운 내용을 저장한다. ELT란? 요즘에는 ETL에서 ELT방식으로 흐름이 바뀌고 있다. T와 L의 위치가 바뀐 ELT 기존의 EL.. 2021. 8. 16.
728x90