일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- CC2023
- 맛있는디자인스터디13기
- 혼공자
- 제이펍
- 혼공파
- 혼공C
- 6주차후기
- 프리미어프로
- CS2023
- Doit파이썬스터디
- 후기
- Doit점프투파이썬
- 전면개정2판
- 애프터이펙트
- 혼공분석
- 맛있는디자인
- 혼공JS
- 맛있는디자인스터디12기
- 혼공단
- 스터디
- 챌린지
- 회고
- 혼공머신
- 혼공학습단
- 맛있는디자인스터디11기
- 진짜쓰는일러스트레이터
- 생성형AI
- 스터디완료
- 3주차후기
- 혼공
- Today
- Total
애독자's 공부방
[혼공분석] 2주차 _ 혼자 공부하는 데이터 분석 with 파이썬 본문
혼공단 - 혼공분석, 혼자 공부하는 데이터 분석 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 손코딩 실습으로 원하는 도서의 페이지 수를 추출하고 화면 캡처하기
'데이터분석 > 혼공학습단 13기' 카테고리의 다른 글
[혼공분석] 1주차 _ 혼자 공부하는 데이터 분석 with 파이썬 (2) | 2025.01.08 |
---|