본문 바로가기

카테고리 없음

[혼공데분 12기] 2주차 스터디 및 과제

반응형

2주차 계획

  • 커리큘럼
  • 일정 : 7/8 ~ 7/14
  • 진도 : Chapter 02
  • 기본 미션 : p. 150의 확인 문제 1번 풀고 인증하기
  • 추가 미션 : p. 137 ~ 138 손코딩 실습으로 원하는 도서의 페이지 수를 추출하고 화면 캡처하기

미션

기본 미션

p. 150의 확인 문제 1번 풀고 인증하기

  1. 다음과 같은 데이터프레임 df가 있을 때 loc 메서드의 결과가 다른 하나는 무엇인가요?

  • (1) df.loc[[0,1,2], ['col1','col2']]
  • (2) df.loc[0:2, 'col1':'col2']
  • (3) df.loc[:2, [True, True]]
  • (4) df.loc[::2, 'col1':'col2']

정답 : 4

추가 미션

p. 137 ~ 138 손코딩 실습으로 원하는 도서의 페이지 수를 추출하고 화면 캡처하기

하단의 실습 부분으로 대체


Chapter 02. 데이터 수집하기

  • 학습 목표
    • 웹 서비스 API에서 데이터를 가져오는 방법 배우기
    • 웹 페이지를 웹 스크래핑하여 데이터를 가져오는 방법 배우기

02-1. API 사용하기

API 란

  • API (Application Programming Interface)
  • 두 프로그램이 서루 대화하기 위한 방법을 정의한 것
  • 웹 기반 API가 널리 사용됨
    • HTTP (Hyper Text Transfer Protocol) : 웹 페이지를 전송하기 위한 통신 규약
    • HTML (Hypertext Markup Language) : 웹 페이지 문서를 위한 마크업 언어
    • 웹 기반 API는 HTTP 프로토콜을 사용하고, HTML 대신 CSV, JSON, XML 같은 형태의 데이터를 주고 받는다.

파이썬에서 JSON 데이터 다루기

  • JSON (JavaScript Object Notation)
  • 파이썬의 딕셔너리(dictionary)와 리스트(list)를 중첩해 놓은 것과 비슷하다.
    • 키(Key)와 값(value)를 콜론(:)으로 연결한다.
    • 키와 값에 문자열을 쓰려면 큰따옴표("")로 감싼다.

파이썬 객체를 JSON 문자열로 변환하기 : json.dumps() 함수

JSON 문자열을 파이썬 객체로 변환하기 : json.loads() 함수

JSON 문자열을 데이터프레임으로 변환하기 : read_json() 함수

파이썬에서 XML 데이터 다루기

  • XML (eXtensible Markup Language)
  • 엘리먼트(element)들이 계층 구조를 이루면서 정보를 표현
    • 루트 엘리먼트
    • 부모 엘리먼트 / 부모 노드
    • 자식 엘리먼트

XML 문자열을 파이썬 객체로 변환하기 : fromstring() 함수

  • json 패키지는 JSON 문자열을 반환하지만, fromstring() 함수는 단순 파이썬 객체가 아닌 ElementTree 모듈 아래에 정의된 Element 클래스 객체를 반환한다.

자식 엘리먼트 확인하기 : finxtext() 메서드

여러 개의 자식 엘리먼트 확인하기 : findall() 메서드와 for 문

API로 20대가 가장 좋아하는 도서 찾기

02-2. 웹 스크래핑 사용하기

  • 웹 스크래핑(web scraping), 웹 크롤링(web crawling)
    • 웹사이트의 페이지를 옮겨 가면서 데이터를 추출하는 작업

검색 결과 페이지 가져오기

데이터프레임 행과 열 선택하기: loc 메서드

HTML에서 데이터 추출하기: 뷰티플수프

검색 결과 페이지 HTML 가져오기: requests.get() 함수

태그 위치 찾기 : find() 메서드

도서 상세 페이지 HTML 가져오기

테이블 태그를 리스트로 가져오기: find_all() 메서드

태그 안의 텍스트 가져오기: get_text() 메서드

전체 도서의 쪽수 구하기

판다스 데이터프레임은 한 행씩 순차적으로 처리하는데 최적화되어 있지 않다. 그래서 데이터프레임을 for 문으로 반복하는 것은 비효율적이다.대신 데이터프레임은 각 행 또는 각 열에 원하는 함수를 자동으로 적용해 주는 여러 가지 방법을 제공한다.

데이터프레임 행 혹은 열에 함수 적용하기: apply() 메서드

데이터프레임과 시리즈 합치기: merge() 함수

  • on 매개변수
    • 합칠 때 기준이 되는 열을 지정한다.
    • 단, 두 데이터프레임에 모두 존재해야 한다.
  • how 매개변수
    • 합쳐질 방식을 지정한다. - SQL Join과 비슷
    • 사용 가능한 값 : inner(기본), left, right, outer
  • left_on, right_on 매개변수
    • 합칠 기준이 되는 열의 이름이 서로 다른 경우 각각 지정하는 방법
  • left_index, right_index 매개변수
    • 합칠 기준이 열이 아니라 인덱스인 경우 사용하는 방법

웹 스크래핑할 때 주의할 점

  1. 웹사이트에서 스크래핑을 허락하였는지 확인할 것 - robots.txt 파일 확인
  2. HTML 태그를 특정할 수 있는지 확인할 것
반응형