[제로베이스] 데이터 사이언스 15기 - (06-05 EDA 스터디노트)

윤태호·2023년 6월 6일
0
post-thumbnail

오늘 수강한 강의 - EDA 웹 데이터 분석 (14 ~ 26)

14 ~ 16 시카고 맛집 메인페이지 분석

접근 태그 확인

  • 시카고 샌드위치 맛집 소개 페이지를 분석

  • div의 sammy 클래스가 보인다
  • div의 sammy 클래스를 읽으면 될 것 같다
  • 50개가 제대로 들어온 것을 확인
  • 한 항목만 살펴보기
  • 원하는 정보 중에서 랭킹, 가게이름, 메뉴가 보인다
  • type이 bs4.element.Tag 라는 것은 find 명령을 사용할 수 있다는 뜻
  • 랭킹 데이터 확보
  • 가게 이름과 메뉴 데이터가 한 번에 있다
  • 연결되는 홈페이지 주소가 "상대경로"이다
  • 가게 이름과 메뉴는 re모듈의 split으로 쉽게 구분할 수 있다
  • 이렇게 찾을 수 있다

50개 가게에 대해 정보 추출







  • 50개 자료에 대해 랭킹, 메뉴, 가게이름, URL까지 모두 정리
  • 칼럼 순서 변경
  • Rank, Cafe, Menu, URL 순서
  • 데이터 저장

17 ~ 18 시카고 맛집 데이터 하위 페이지 분석

하위 페이지 하나에 대해 연습하기

  • 50 URL 중 하나를 대상으로 잡는다
  • 해당 페이지에 가보면 내가 얻고 싶은 정보가 있다
  • p 태그에 addy 라는 class

  • $ 달러 기호를 만나서 나타나는 숫자들은 .을 만날 때 까지 가격이다
  • 단, 10.5처럼 . 기호 후에 다시 연달아 숫자가 나올 수도 있다
  • 띄어쓰기 후에 숫자 혹은 문자가 나타나면 주소이다
  • 주소는 .,로 끝난다

Regular Expression

  • text로 변환
  • 가격과 주소만 가져오기 위해 .,로 분리
  • 숫자로 시작하다가 꼭 .을 만나고 그 뒤 숫자가 있을 수도 있고 아닐 수도 있다
  • 가격이 끝나는 지점의 위치를 이용해서 그 뒤는 주소로 생각한다

pythonic 한 이야기

  • 코드의 동작 유무를 확인하기 위해 세 번 돌림

  • List 형 데이터를 반복시킬 때는 이렇게 하는 것이 정석
  • 여러 컬럼을 for 문 내에서 사용할 때는 위 방법이 어렵다

  • iterrows() 함수를 사용하는 경우가 좀 더 좋다
  • 받는 인자로 인덱스와 나머지 row를 받는다는 것에 주의

  • 전체로 다 돌리자

50번을 돌려서 전체 데이터 추출

  • conda install -c conda-forge tqdm




  • 저장

19 ~ 20 시카고 맛집 데이터 지도 시각화

Folium을 이용한 지도 시각화






21 ~ 26 네이버 영화 평점

네이버 영화 평점 사이트 분석 시작하기

  • 네이버 영화 메인 페이지
  • 영화랭킹 탭 이동
  • 영화랭킹에서 평점순(현재상영영화) 선택
  • 접근 URL 확인
  • 웹 페이지의 주소에는 많은 정보가 담겨 있어서 원하는 정보를 얻기 위해서는 변화시켜야 하는 주소의 규칙이 보이기도 한다
  • 이 경우 날짜 정보를 변경해주면 해당 페이지에 그냥 접근이 가능하다
  • 일단 한 페이지만 먼저 접근
  • 날짜는 20180315로 시작
  • 여기서 영화 제목과 평점을 가져오고 싶다
  • 크롬 개발자 도구 활용
  • 크롬설정 - 도구 더보기 - 개발자 도구
  • 영화제목은 td class = “title” 안에 div class = “tit5” 안에 a 태그 안에
  • 영화 평점은 td class=“point”
  • find_all 명령으로 쉽게 접근
  • div 태그의 tit5를 확인해보니 안에 a 태그가 보인다
  • 영화 제목은 a 태그에서 string으로 글자를 가져오면 알 수 있다
  • td 태그에 point 클래스를 확인하면 영화 평점을 얻을 수 있다


  • 매 페이지마다 가져오는 영화의 갯수가 조금씩 다르다
  • 그래서 end 변수에 한 페이지의 영화제목 갯수를 넣고 0부터 그 갯수만큼 for문을 돌려준다
  • 포인트도 마찬가지

네이버 영화 평점 데이터 확보하기

  • 날짜만 바꿔주면 원하는 기간 만큼 데이터를 얻을 수 있다
  • 날짜 만들기
  • pandas의 date_range를 이용하면, 손쉽게 날짜를 만들 수 있다
  • 2017.12.01 부터 100일 생성
  • 날짜형 데이터들은 원하는 형태로 출력이 가능
  • 파이썬의 string(문자형) 데이터형은 format이라는 기능이 있다
  • {} 중괄호를 두고, format 옵션으로 손쉽게 내용을 만들 수 있다
  • 얻고 싶은 데이터를 저장할 빈 리스트 생성
  • 100일간의 데이터를 for문으로 받아 오면 된다
  • 크기 문제 없음 확인
  • Pandas 데이터 프레임으로 만들기
  • 이 데이터는 Raw Data가 된다
  • 100일치 영화 평점 데이터가 100KB도 안된다
  • astype 명령으로 point를 숫자로 바꾸기
  • 저장

네이버 영화 평점 데이터 정리 및 시각화

  • 영화 이름으로 인덱스를 잡고 점수의 합산을 구한다
  • 100일 간 네이버 영화 평점 합산 기준 베스트 10을 뽑을 수 있다
  • DataFrame의 검색 명령으로 query 명령도 있다




  • 100일 간 영화를 모두 정리
  • 엑셀로도 저장

  • matplotlib 한글 설정
  • 보고 싶은 영화 몇 개만 추려서 그래프로 확인해보자

재미있었던 부분

웹데이터 부분을 마치며 웹에 있는 정보를 가져와서 정리하고 시각화 하는 것이 보기에도 좋고 재미있었다

어려웠던 부분

시카고 맛집 데이터 지도 시각화 부분에서 tqdm과 fakeagent이 계속 적용되지 않아서 반복문이 돌아가지 않았다
이를 고치는데 시간이 너무 오래걸려 버렸다

느낀점 및 내일 학습 계획

구조에 익숙해지라고 하지만 어떻게 익숙해져야 하는지 잘 모르겠다
강의를 보며 따라가고는 있지만 나중에 혼자 만들어보라고 한다면 못할 것 같다
더 연습할 시간이 충분하면 좋겠다
내일은 유가 분석을 공부할 예정이다

profile
데이터 부트캠프 참여중

0개의 댓글