관리 메뉴

애독자's 공부방

[혼공분석] 2주차 _ 혼자 공부하는 데이터 분석 with 파이썬 본문

데이터분석/혼공학습단 13기

[혼공분석] 2주차 _ 혼자 공부하는 데이터 분석 with 파이썬

애독자 2025. 1. 13. 06:26
728x90

혼공단 - 혼공분석, 혼자 공부하는 데이터 분석 with 파이썬

 

 

■ 공부한 내용

# 진도 기본 숙제(필수) 추가 숙제(선택)
2주차
(1/13 ~ 1/19)
Chapter 02 p. 150의 확인 문제 1번 풀고 인증하기 p. 137 ~ 138 손코딩 실습으로 원하는 도서의 페이지 수를 추출하고 화면 캡처하기

 

 

 

□ Chapter 02 | 데이터 수집하기
▷ 02-1 | API 사용하기
 1. 핵심 포인트 요약
  - API(Application Programming Interface): 프로그램 간 데이터를 전달하기 위해 정한 규칙

   . 수동으로 데이터를 얻는 방법은 반복 작업에는 부적합 → 공개 API를 사용하면 데이터 수집 과정을 자동화 가능
  - HTTP(Hypertext Markup Language): 웹에서 데이터를 주고받기 위한 프로토콜 (웹 페이지, 이미지 등을 받아 웹 브라우저에 나타내는데 사용)

   ∴ 웹 브라우저로 접속하는 인터넷 URL 주소는 모두 http 혹은 보안이 강화된 https로 시작

  - JSON(JavaScript Object Notation): 근래에 아주 많이 사용하는 데이터 전달 포멧으로, 자바스크립트뿐만 아니라 웹기반 API에서도 널리 사용

   . 장점: HTML이나 XML보다 사람이 읽기 편하고, 간단하게 파이썬 객체로 변환 가능

[ {"name": "혼자 공부하는 데이터 분석", "author": "박해선", "year": 2022},
  {"name": "혼자 공부하는 머신러닝+딥러닝", "author": "박해선", "year": 2020} ]

  - XML(eXtensible Markup Language): JSON 보다 조금 장황하지만 사람이 이해하기 쉬운 구조적인 포멧을 제공

   . 파이썬: 기본으로 제공되는 xml 패키지를 사용하여 XML 문서의 엘리먼트 탐색

   . 판다스: read_xml() 함수를 사용하여 데이터프레임으로 변환

<books>
    <book>
        <name>혼자 공부하는 데이터 분석</name>
        <author>박해선</author>
        <year>2022</year>
    </book>
    <book>
        <name>혼자 공부하는 머신러닝+딥러닝</name>
        <author>박해선</author>
        <year>2020</year>
    </book>
</books>

 

 2. 책에 나온 함수와 메서드

함수/메서드 기능 사용
json.dumps() 파이썬 객체를 JSON 문자열로 변환 json.dumps(obj, ensure_ascil)
  매개변수 설명
  obj
ensure_ascil


. 변환하려는 파이썬 객체
. 객체에 담긴 문자를 그대로 출력하려면 False로 지정 (기본값: True는 아스키 문자 외의 문자를 이스케이프 처리)
json.loads() JSON 문자열을 파이썬 객체로 변환 json.loads(obj)
  obj . 변환하려는 JSON 문자열
pandas.read_json() JSON 문자열을 판다스 시리즈나 데이터프레임으로 변환 pandas.read_json(path_or_buf)
  path_or_buf . 변환하려는 JSON 문자열이나 파일 경로
xml.etree.ElementTree.fromstring() XML 문자열을 분석하여 xml.etree.ElementTree.Element 클래스 객체를 반환 xml.etree.ElementTree.fromstring(text)
  text . 변환하려는 XML 문자열
xml.etree.ElementTree.Element.findtext() 지정한 태그 이름과 맞는 첫 번째 자식 엘리먼트의 텍스트를 반환 xml.etree.ElementTree.Element.findtext(match)
  match . 찾으려는 태그 이름
xml.etree.ElementTree.Element.findall() 지정한 태그 이름과 맞는 모든 자식 엘리먼트를 반환 xml.etree.ElementTree.Element.findall(match)
  match . 찾으려는 태그 이름
requests.get() HTTP GET 방식으로 URL을 호출하고 request.Response 객체를 반환 requests.get(url)
  url . 호출할 URL
requests.Response.json() 응답받은 JSON 문자열을 파이썬 객체로 변환하여 반환 requests.Response.json()

 

 

▷ 02-2 | 웹 스크래핑 사용하기
 1. 핵심 포인트 요약

  - 웹 스크래핑(web scraping) 혹은 웹 크롤링(web crawling): 웹 사이트에서 필요한 데이터를 추출하는 기술로, HTML은 구조적이지 않기 때문에 스크래핑이나 크롤링으로 데이터를 수집하는데 비교적 많은 노력이 필요

   . 웹 스크래핑이나 크롤링을 사용하기 전에 먼저 공개 API를 통해 사용할 수 있는지 확인 필요

  - 뷰티플수프(Beautiful Soup): HTML 문서를 파싱하는데 사용하는 대표적인 파이썬 패키지로, 사용법이 쉽고 빠르기 때문에 파이썬 프로그래머들이 즐겨 사용

   . 뷰티플수프는 requests 패키지로 가져온 HTML에서 원하는 태그나 텍스트를 찾는 기능을 제공

 

 2. 책에 나온 함수와 메서드

함수/메서드 기능 사용
loc 레이블(이름) 또는 블리언 배열로 데이터프레임의 행과 열을 선택. 정수로 지정하면 인덱스의 레이블로 간주. 불리언 배열로 지정할 경우 배열의 길이는 행 또는 열의 전체 길이와 같아야 함 df.loc[[0,1], ['bookname','authors']]
BeautifulSoup.find() 현재 태그 아래의 자식 태그 중에서 지정된 이름에 맞는 첫 번째 태그를 찾고, 찾은 태그가 없을 경우 None 반환 BeautifulSoup.find(id, attrs, class_)
  id
attrs
class_
. 찾으려는 태그의 아이디를 지정
. 찾으려는 태그의 속성을 딕셔너리로 지정
. 찾으려는 태그의 class 속성을 지정
BeautifulSoup.find_all() 현재 태그 아래의 자식 태그 중에서 지정된 이름에 맞는 모든 태그를 찾고, 찾은 태그가 없을 경우 빈 리스트를 반환. 뷰티플수프 객체를 함수처럼 호출할 경우 자동으로 이 메서드를 호출 BeautifulSoup.find_all(id, attrs, class_)
  id
attrs
class_
. 찾으려는 태그의 아이디를 지정
. 찾으려는 태그의 속성을 딕셔너리로 지정
. 찾으려는 태그의 class 속성을 지정
BeautifulSoup.get_text() 태그 안의 텍스트를 반환 BeautifulSoup.get_text()
DataFrame.apply() 데이터프레임의 행 또는 열에 지정한 함수를 적용 DataFrame.apply(func, axis)
  func
axis

. 행 또는 열에 적용할 함수
. 0일 때 각 열에 함수를 적용하고 1일 때 각 행에 함수를 적용 (기본값: 0)
pandas.merge() 데이터프레임이나 시리즈 객체를 합침 pandas.merge(left, right, on, how, left_on, right_on, left_index, right_index)
  left, right
on
how
left_on / right_on

left_index / right_index

. 합칠 데이터프레임이나 시리즈 객체를 전달
. 합칠 기준이 되는 열을 지정
. 합쳐질 방식(inner, left, right, outer)을 지정
. 합칠 기준이 되는 열 이름이 서로 다를 경우 각기 지정
. 합칠 기준이 되는 왼쪽 또는 오른쪽 인덱스를 지정

 

 

 

■ 기본 숙제

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

  - 정답: ④

   . ::2 인 경우 하나씩 건너뛰면서, 행을 선택하는 스텝을 지정하기 때문에 표시되는 결과가 달라짐

 

 

 

■ 추가 숙제(선택)

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

 

 

728x90