API 소개

pandas로 빠르고 간편한 데이터 적재

Amany Mahfouz

Instructor

Application Programming Interfaces

  • 애플리케이션이 다른 프로그램과 통신하는 방법을 정의
  • 데이터베이스 세부 정보를 몰라도 애플리케이션에서 데이터 수집 가능

일부 항목이 체크된 양식

pandas로 빠르고 간편한 데이터 적재

Application Programming Interfaces

  • 애플리케이션이 다른 프로그램과 통신하는 방법을 정의
  • 데이터베이스 세부 정보를 몰라도 애플리케이션에서 데이터 수집 가능

양식과 상점 전면. 화살표가 양식이 상점으로 전송됨을 표시.

pandas로 빠르고 간편한 데이터 적재

Application Programming Interfaces

  • 애플리케이션이 다른 프로그램과 통신하는 방법을 정의
  • 데이터베이스 세부 정보를 몰라도 애플리케이션에서 데이터 수집 가능

열린 상자와 상점 전면. 화살표가 상점이 패키지를 보냈음을 표시.

pandas로 빠르고 간편한 데이터 적재

Requests

  • 웹사이트로 데이터 송수신
  • 특정 API에 종속되지 않음
  • URL에서 데이터를 가져오려면 requests.get()

requests 로고

pandas로 빠르고 간편한 데이터 적재

requests.get()

  • URL에서 데이터를 가져오려면 requests.get(url_string) 사용
  • 키워드 인자
    • params: API 요청을 맞춤화할 매개변수-값 딕셔너리
    • headers: 딕셔너리, 사용자 인증에 사용 가능
  • 결과: 데이터와 메타데이터를 담은 response 객체
    • response.json()은 JSON 데이터만 반환
pandas로 빠르고 간편한 데이터 적재

response.json()과 pandas

  • response.json()은 딕셔너리를 반환
  • read_json()은 딕셔너리가 아닌 문자열을 기대함
  • pd.DataFrame()으로 응답 JSON을 데이터프레임에 적재
    • read_json()을 쓰면 오류 발생!
pandas로 빠르고 간편한 데이터 적재

Yelp Business Search API

Yelp 로고

pandas로 빠르고 간편한 데이터 적재

Yelp Business Search API

Yelp Business Search API 문서. 요청 엔드포인트와 일부 매개변수가 표시됨.

pandas로 빠르고 간편한 데이터 적재

Yelp Business Search API

Yelp Business Search API 문서. API 엔드포인트 URL이 강조됨.

pandas로 빠르고 간편한 데이터 적재

Yelp Business Search API

Yelp Business Search API 문서. 선택적 term 매개변수가 강조됨.

pandas로 빠르고 간편한 데이터 적재

Yelp Business Search API

Yelp Business Search API 문서. 필수 위치 매개변수가 강조됨.

pandas로 빠르고 간편한 데이터 적재

Yelp Business Search API

Yelp Business Search API 문서, 예시 응답 JSON 표시

pandas로 빠르고 간편한 데이터 적재

요청 보내기

import requests
import pandas as pd

api_url = "https://api.yelp.com/v3/businesses/search"
# 문서에 따라 매개변수 딕셔너리 설정 params = {"term": "bookstore", "location": "San Francisco"}
# 문서에 따라 API 키가 포함된 헤더 딕셔너리 설정 headers = {"Authorization": "Bearer {}".format(api_key)}
# API 호출 response = requests.get(api_url, params=params, headers=headers)
pandas로 빠르고 간편한 데이터 적재

응답 파싱

# response 객체에서 JSON 데이터만 분리
data = response.json()
print(data)
{'businesses': [{'id': '_rbF2ooLcMRA7Kh8neIr4g', 'alias': 'city-lights-bookstore-san-francisco', 'name': 'City Lights Bookstore', 'image_url': 'https://s3-media1.fl.yelpcdn.com/bphoto/VRydkkpVbA3CeVLBKzs2Vw/o.jpg', 'is_closed': False,
# businesses 데이터를 데이터프레임으로 로드
bookstores = pd.DataFrame(data["businesses"])
print(bookstores.head(2))
                                  alias        ...                                                    url
0   city-lights-bookstore-san-francisco        ...      https://www.yelp.com/biz/city-lights-bookstore...
1  alexander-book-company-san-francisco        ...      https://www.yelp.com/biz/alexander-book-compan...

[2 rows x 16 columns]
pandas로 빠르고 간편한 데이터 적재

Ayo berlatih!

pandas로 빠르고 간편한 데이터 적재

Preparing Video For Download...