본문 바로가기

Data Handling

(17)
훈련, 테스트 데이터 통합하기 오늘은 훈련 데이터와 테스트 데이터를 하나로 통합하는 코드를 분석해 볼텐데, 이번 포스팅에서는 데이터를 통합하기 위해 사용된 함수들을 위주로 정리해보겠습니다. 해당 코드는 캐글의 '산탄데르 제품 추천 경진대회'의 8등 팀(Alejo y Miro)의 소스코드 중 일부이며, '캐글 우승작으로 배우는 머신러닝 탐구생활' 도서를 참고했음을 밝힙니다. 그럼 시작해보겠습니다!! 순서 문제 뼈대 구상 및 코드 사용된 함수 정리 1. 문제 train set은 총 48개의 열로 구성되어 있습니다. 그 중 24개는 고객 관련 특성이고, 나머지 24개는 사용 중인 제품 관련 특성입니다. test set은 고객 관련 특성 24개만 존재하고, 제품 관련 특성 24개에 대해서는 0으로 처리해서 train set과 통합하고자 합니..
selenium - 부킹닷컴 객실 가격 크롤링 selenium을 사용하기 이전, beautifulsoup으로 먼저 시도해보았습니다. 하지만 이상하게도 가격 정보에 관해서만 계속 빈리스트로 반환 되었습니다. 아무리 공부하고 고민해도 해결이 되지 않아 크롤링 전문가를 찾아 자문을 구하고자 구글링을 했습니다. 정말 감사하게도 한 분이 답장을 주셨고, 실제 오프라인으로 만나 도움을 주셨습니다. -- '코딩 좀 알려주라(이하 코알라)'의 이** 매니저님 감사합니다 -- 그 이유를 보자면 가격 정보는 수정이 많고(부킹닷컴 자체 할인/ 특가 등), 어떤 이유에서인지 다른 공간에서 따로 관리하고 있는것 같다고 합니다. 그래서 html을 불러오는 과정에서 가격 정보는 빠지는 것이라고 하는데요, 이럴 때의 솔루션으로 selenium을 알려주셨습니다. selenium은..
beautifulsoup - 부킹닷컴 호텔 이름, 평점 크롤링 순서 url 준비 requests를 사용하여 url로부터 정보 가져오기 beautifulsoup을 사용하여 html 형식으로 파싱하기 원하는 정보 지정해서 담기 문자열만 추출 0. 라이브러리 import requests # url에서 정보 요구!! from bs4 import BeautifulSoup # 이걸로 가져온 정보를 정리할거야 1. url 준비 url = '찾고자 하는 정보가 포함된 페이지 url' 2. requests를 사용하여 url로부터 정보 가져오기 content = requests.get(url).content # url로부터 정보(content)를 가져와 url에 담긴 정보가 이렇게나 많습니다. 이걸 컴퓨터가 이해하기 쉽게 정리하는 작업을 beautifulsoup이 도와줍니다. 3. ..
pandas.read_html() - 네이버 금융 두바이유 시세 크롤링 크롤링을 하고자 하는 데이터가 table형식으로 되어 있다면 pandas의 read_html()을 이용할 수 있습니다. 예시를 통해서 바로 시작해보겠습니다. 다음은 네이버 금융에서 두바이유를 검색했을때 페이지 화면입니다. 여기서 바로 read_html을 통해서 모든 table형식의 데이터를 가져올수 있겠지만, 저희가 필요한 것만 가져오면 시간도 절약되고 처리과정도 줄어들것입니다. 저희가 필요한 정보를 두바이유의 '일별 시세'라고 가정했을때, 일별 시세만 보이는 url을 찾을 수 있을까요? 네, 가능합니다. '일별 시세'의 2페이지를 마우스 우클릭 해보시면 새 탭에서 링크 열기가 보이실 겁니다. 그렇게 링크를 열면 '일별 시세'만 보이는 url에 접근하실 수 있습니다. 사실 2페이지를 누른다는건 2페이지의..
공공데이터포털 API - 대한민국 국경일 및 공휴일 순서 key 받기 url 준비 requests를 사용하여 url로부터 정보 가져오기 상위/하위 등을 파악하기 쉽게 xmltodict로 파싱 (xml 파일이라면 json으로 변환 - dumps) json을 파이썬으로 load 원하는 정보 지정해서 담기 0. 라이브러리 import requests # url로부터 정보를 가져올때 사용 import xmltodict # orderedDict 형태로 변환 - 보기 쉽게 import json # xml을 json으로 json을 파이썬으로 변환 1. key 받기 홈페이지에서 발급 받으세요. 2. url 준비 해당 홈페이지에는 받고자 하는 데이터에 대해 설명하는 문서 파일이 첨부되어 있을 것입니다. 문서파일에서 받고자 하는 url과 key를 합쳐 새로운 url을 만들..
API의 필요성 API 란? Application Programming Interface, 응용프로그램의 프로그래밍을 도와주는 매개체 정도로 보면 되는데요, API가 없었을때의 상황을 가정해보면 API의 역할과 중요성을 파악할 수 있습니다. 만약 우리가 프로젝트를 하는데 날씨 정보가 꼭 필요하다고 가정해보죠. 최대한 실시간으로 업데이트 되는 날씨 정보를 받기 위해 기상청 데이터 관리자에게 이메일을 보냅니다. " 안녕하세요. 우리는 00 대학교 00 프로젝트를 진행하고 있는데, ... 이런 이유로 날씨 데이터가 꼭 필요합니다. 그리고 이 데이터를 악용하지 않을 것도 약속드릴게요. 감사합니다. " 기상청 데이터 관리자는 언제, 누구에게, 어떤 이유로 데이터를 보내줬다는 내용을 정리하고, 데이터를 악용하지 말아달라는 부탁과 ..
시간별 데이터를 일자별 데이터로 변환하기 다음과 같은 날씨 데이터가 있습니다. 2018-02-01 부터 2020-05-18 까지의 시간별 기온데이터로, 지역별(184, 185, 188, 189)로 각각 정리되어 있습니다. 해당 데이터를 일자별로 정리하되, 모든 지역을 고려한 일자별 최소, 최대, 평균 기온의 형태가 필요하다고 합니다. 이런 형태로 말이죠 :) 시작해 볼까요? 순서 시간별 지역들의 기온을 평균내거나 중앙값을 사용하여 지역을 없애기 시간별 기온에서 최소, 최대, 평균 기온을 추출하기 1. 시간별 지역들의 기온을 평균내거나 중앙값을 사용하여 지역을 없애기 지역의 속성을 모두 고려하기 위해 다음과 같은 데이터 형태를 만들어야 합니다. 밑으로 쭉 붙어있는 데이터를 같은 시간 기준으로 오른쪽으로 붙이는 작업을 해야겠네요. 블로그 '문법' ..
결측치 처리하기 (삭제 / 대체) 순서 결측치(NaN)가 포함된 행 삭제하기 - dropna() 특정값/ 평균값/ 최빈값/ 중간값으로 대체하기 - fillna() / replace() 이전/ 이후 값으로 대체하기 - fillna() / shift() ■ 결측치(NaN)가 포함된 행 삭제하기 # 전체가 NaN인 행만 삭제 : how = 'all' # NaN이 두 개 이상인 행만 삭제 : thresh = 2 # 특정 열에서만 결측치 확인하기 : subset = ['A_col','B_col',...] data.dropna(axis = 0, how = 'any', inplace=True) ■ 특정 값/ 평균값/ 최빈값/ 중간값으로 대체하기 - fillna() / replace() - fillna() data.fillna(0, inplace=Tr..