ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [혼자 공부하는 데이터 분석 with 파이썬] 02 데이터 수집하기
    카테고리 없음 2023. 9. 9. 23:06

    02-1 API 사용하기

     

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

          JSON : 파이썬 딕셔너리와 리스트를 합쳐놓은 것과 유사

          {"name":"혼자 공부하는 데이터 분석"} 

     

    json 형식으로 파이썬 딕셔너리 만들기

    d={"name":"혼자 공부하는 데이터 분석"}
    print(d['name'])
    혼자 공부하는 데이터 분석

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

    json.dumps() 함수 : 파이썬 객체=> JSON 형식에 맞는 텍스트로 바꿀때

    import json
    d_str=json.dumps(d,ensure_ascii=False)
    print(d_str)
    {"name": "혼자 공부하는 데이터 분석"}
    print(type(d_str))
    <class 'str'>​

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

    json.loads() 함수 : JSON 문자열 => 파이썬 객체

    d2=json.loads(d_str)
    print(d2['name'])
    혼자 공부하는 데이터 분석​
    print(type(d2))
    <class 'dict'>​

    딕셔너리 안에 리스트 포함시키기

    d3=json.loads('{"name":"혼자 공부하는 데이터 분석","author":["박해선","홍길동"],"year":2022}')
    print(d3['author'][1])
    홍길동​

    JSON 배열 : 

    [] => JSON 배열

    {} => JSON 객체

    [ {JSON 객체1}, {JSON 객체2} ]

    문자열이 길기 때문에 """ 를 사용

    d4_str="""
    [
      {"name":"혼자 공부하는 데이터 분석","author":"박해선","year":"2022"},
      {"name":"혼자 공부하는 머신러닝+딥로닝","author":"박해선","year":"2020"}
    ]
    """
    print(type(d4_str))
    d4=json.loads(d4_str)
    print(d4[0]['name'])
    print(type(d4))
    <class 'str'>
    혼자 공부하는 데이터 분석
    <class 'list'>

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

    read_json() 함수 : JSON 문자열 => 데이터프레임

                                : 판다스에서 제공

    import pandas as pd
    pd.read_json(d4_str)
      name author year
    0 혼자 공부하는 데이터 분석 박해선 2022
    1 혼자 공부하는 머신러닝+딥로닝 박해선 2020

    DataFrame 클래스 사용 : JSON 문자열=> 파이썬 객체로 만들고 데이터프레임 클래스 사용

    pd.DataFrame(d4)

    02) 파이썬에서 XML 데이터 다르기

    XML : eXtensivle Markup Language

             : 엘리멘트들이 계층 구조를 이루면서 정보를 표현함

             : 태그가 붙음 <>

             : <부모 엘리멘트>   <자식엘리멘트 > 난 자식 </자식 엘리멘트>  </부모 엘리멘트>

     

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

    fromstring() 함수 : 문자열 => XML

                                : xml.etree.ElementTree 모듈의 fromstring() 함수 

     

    XML을 파이썬의 """ 로 문자열로 만들기

    파이썬에서 제공하는 XML 패키지를 사용해 읽기

    x_str = """
    <book>
        <name>혼자 공부하는 데이터 분석</name>
        <author>박해선</author>
        <year>2022</year>
    </book>
    """
    import xml.etree.ElementTree as et
    book = et.fromstring(x_str)
     
    print(type(book))
    <class 'xml.etree.ElementTree.Element'>

    book 객체의 tag 속성을 출력하면 엘리먼트 이름을 쉽게 확인할 수 있다. 

    print(book.tag)
    book

    02-2 자식 엘리먼트 확인하기 : findtext() 메서드

    book 객체를 리스트로 변환하여 자식 엘리먼트 구하기

    book_childs = list(book)
    print(book_childs)
    [<Element 'name' at 0x79b4734f1e90>, <Element 'author' at 0x79b4734f27f0>, <Element 'year' at 0x79b4734f1c10>]

    book_childs 리스트 각 항목을 name, author, year 변수에 할당하고 

    text 속성으로 엘리멘트에 있는 텍스트로 출력

    name,author,year=book_childs
    print(name.text)
    print(author.text)
    print(year.text)
    혼자 공부하는 데이터 분석
    박해선
    2022

    findtext() 메서드 : 해당하는 자식 엘리먼트를 탐색하여 자동으로 텍스트로 반환

    name = book.findtext('name')
    author = book.findtext('author')
    year = book.findtext('year')
    print(name)
    print(author)
    print(year)
    혼자 공부하는 데이터 분석
    박해선
    2022

    XML 은 JSON과 달리 배열 구조가 없음

    대신 다음처럼 두개의 <book> 엘리먼트를 감싸는 부모 엘리먼트를 만듦

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

    이제 x2_str의 부모 엘리먼트는 <book>이 아니라 <books> 가 된다

    fromstring() 함수를 사용해 부모 엘리먼트를 확인

    books =et.fromstring(x2_str)
    print(books.tag)
    books

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

    findall() 메서드 : 동일한 이름을 가진 여러 개의 자식 엘리먼트를 찾기

    for book in books.findall('book'):
      name=book.findtext('name')
      author=book.findtext('author')
      year=book.findtext('year')
      print(name)
      print(author)
      print(year)
      print()
    혼자 공부하는 데이터 분석
    박해선
    2022
    
    혼자 공부하는 머신러닝+딥러닝
    박해선
    2020

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

     

    03-1 파이썬으로 API 호출하기 : requests 패키지

    requests 패키지 : url 호출하기

    requests.get() 함수 : get ()함수가 반환하는 값은 API 호출의 결과를 담고 있는 객체

    data=r.json()
    print(data)
Designed by Tistory.