ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [혼공학습단 9기]혼자 공부하는 데이터 분석 with 파이썬 2주차 미션
    데이터분석 2023. 1. 15. 16:34

    2주차 내용은 데이터 수집하기이다. 데이터가 수집이 안된다면 분석이 무슨 의미가 있을까? 2장은 2-1) API사용하기와 2-2) 웹스크래핑사용하기로 나누어져 있다.

     

    2-1 API 사용하기

    -  API란?

     - 두 프로그램 사이에서 데이터를 주고 받는 방법? 규칙을 의미. 대표적인 예로 Web API가 있다. 

     

    - 웹페이지를 전송하기 위한 통신 규약과 웹페이지 문서 : HTTP, HTML

    - WEB 서비스를 제공하기 위해서는 서버 소프트웨어가 필요하다. 대표적으로 NGINX, Apache가 존재한다. 이 서버 소프트웨어는 HTTP라는 프로토콜 기반으로 웹상에서 통신한다.

     

    - HTTP는 인터넷에서 웹페이지를 전송하는 기본 통신방법이고 HTML은 웹페이지를 구성하는 표준 언어이다.

    < 웹페이지 데이터 요청, 전송>

    - Web API에서의 데이터 요청, 응답 : JSON, XML, CSV

     Web API를 이용하여 데이터를 요청할 경우, Json, XML, CSV 형태로 대부분 데이터를 전송한다. 웹페이지 표준 언어인 HTML은 데이터 구조가 복잡하여 데이터를 전송하기에 용이하지 않다. 이제 Json,XML형식으로 데이터를 요청하고 전송받는 방법을 배워보자.

    <Web API를 이용하여 데이터 요청, 전송>

     

    - 파이썬에서 JSON 다루기

     JSON이란 JavaScript Object Notation의 약자로 구조는 아래와 같다. key와 value로 구성된 데이터 포멧이다. 

    // JSON형식
    {"name"(key):"Son"(value),"subject"(key):"Computer"(value)}

    그리고 JSON은 파이썬의 딕셔너리와 리스트를 중첩해 놓은 것과 유사하다. 

     

    - 파이썬 객체 <-> JSON문자열 : json.dumps,loads

    json.dumps : 파이썬 객체를  JSON 문자열형태로 바꿔주는 함수. 다만, 한글이 포함 되어있다면 ensure_ascii를 False로 처리해야 한다. 기본적으로 아스키 문자를 제외한 문자는 16진수로 표현하기 때문이다. 

    json.loads : JSON문자열을 파이썬객체로 바꿔주는 함수.

    **그런데 왜 변환해야 하지?? : HTTP프로톨는 기본적으로 텍스트를 주고 받기 때문에 파이썬 객체를 텍스트형태로 바꿔서 전달해야 한다.

    - JSON Array와 긴 JSON 문장 : JSON Array형식은 파이썬의 List를 중첩해놓은 구조와 같다. 그래서 d4['index']로 접근 가능하다. 긴 JSON 문장은 ""{~~긴문장~~}"""으로 입력가능하고 줄 변경 가능하다.

    read_json() : json 문자열을 데이터프레임구조로 변경.

     

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

    XML(eXtensible Markup Language)은 컴퓨터와 사람 모두 쓰기 편한 포멧이다.

     

    - XML구조 : XML은 앨리먼트라는 단위들로 이루어져 있고 부모와 자식이라는 상,하위 계층이 존재한다. 

    각 앨리먼트는 시작태그와 종료태그로 감싸진다. 

    <book>(루트,부모 앨리먼트)
    (자식1 앨리먼트)<name>(시작태그)혼자 공부하는 데이터 분석</name>(종료태그)
    (자식2 앨리먼트)<author>박해선</author>
    (자식3 앨리먼트)<year>2022</year>
    </book>

     

    - XML 문자열을 파이썬 객체로 변환 : fromstring() : 파이썬에서 기본으로 제공하는 XML패키지(xml.etree.ElementTree모듈)의 fromstring()함수로 xml문자열을 ElementTree클래스에 정의 된 Element객체로 변환 가능.

    Element 객체에 tag함수로 부모앨리먼트의 이름 확인 가능.

     

    - 자식 엘리먼트 확인하기 : findtext() : 엘리먼트 객체에 자식 앨리먼트의 이름을 입력하면 findtext함수가 자동으로 텍스트를 분석하여 데이터를 찾는다. 다만, 같은 앨리먼트이름이 있다면 첫번째 데이터를 가지고 온다.

    - 여러개의 자식 엘리먼트 확인 : findall()함수와 for문 : 동일한 이름의 앨리먼트들의 정보를 조회할 때는 findall()함수(해당 이름의 앨리먼트 데이터 전부 찾는 함수)와 for문을 이용하여 쉽게 확인 할 수 있다.

    2-2 웹스크래핑

     

    - MISSION 

    기본미션

    정답 : 4.

     '::2'는 스텝을 지정하는 구문으로 결과가 행 index 0,2,4..와 같이 출력된다.

     

    선택미션

Designed by Tistory.