해당 내용은 Datacamp의 Data engineering track을 정리했습니다.
4. Streamlined Data Ingestion with pandas의 chapter 1에 대한 내용입니다.
1. Introduction to JSON
- Javascript Object Notation 의 약어로 웹을 통해 데이터를 전송하는 일반적인 형식입니다.
- 테이블이 아니기에 더 효율적으로 데이터를 저장할 수 있습니다.
- python의 dict 형식과 같이 key-value 형태 즉 attribute-value 쌍을 가지고 있습니다.
- JSON은 중첩될 수 있습니다.
pandas에서는read_json()
를 사용해서 불러올 수 있습니다.orient
argument를 줘서 특수한 경우의 json 파일들도 불러올 수 있습니다.
# Load pandas as pd
import pandas as pd
# Load the daily report to a dataframe
pop_in_shelters = pd.read_json("dhs_daily_report.json")
# View summary stats about pop_in_shelters
print(pop_in_shelters.describe())
'''
total_single_adults_in_shelter
count 1000.000
mean 11472.880
std 1113.664
min 9610.000
25% 10381.750
50% 11633.500
75% 12437.500
max 13270.000
'''
2. Introduction to APIs
API는 Application Programming Interfaces의 약어로 하나의 어플리케이션이 다른 프로그램과 소통하는 방법을 정의한 것입니다. API를 통해 데이터베이스 구조를 디테일하게 알지 못해도 데이터를 얻을 수 있도록 합니다. Requests
를 이용해서 API를 알아봅시다.
requests.get(url_string)
는 URL에서 데이터를 가져올 때 사용합니다.- 여러가지 arguments들이 있습니다.
params
headers
- 결과 반환은
response
코드를 사용 합니다.response.json()
데이터만 가지고 오려할 떄 사용합니다.response.json()
은 dictionary 형태를 반환하는데 pandas의pd.read_json()
은 string 형태의 데이터만 읽을 수 있습니다. 그래서 이 경우pd.DataFrame()
을 사용해야 합니다.
api_url = "https://api.yelp.com/v3/businesses/search"
# Get data about NYC cafes from the Yelp API
# headers 와 params는 미리 주어진 것을 사용한다.
response = requests.get(api_url,
headers=headers,
params=params)
# Extract JSON data from the response
data = response.json()
# Load data to a dataframe
cafes = pd.DataFrame(data["businesses"])
# View the data's dtypes
print(cafes.dtypes)
3. Working with nested JSONs
중첩된 JSON에 대해서 어떻게 해야할까요?pandas.io.json
json_normalize()
sep
record_path
meta
meta_prefix
# Load other business attributes and set meta prefix
flat_cafes = json_normalize(data["businesses"],
sep="_",
record_path="categories",
meta=["name",
"alias",
"rating",
["coordinates", "latitude"],
["coordinates", "longitude"]],
meta_prefix="biz")
# View the data
print(flat_cafes.head())
반응형
'IT > 가짜연구소 스터디' 카테고리의 다른 글
[DA] 4-3. Importing Data from Databases (0) | 2022.09.13 |
---|---|
[DA]4-2. Importing Data From Excel Files (0) | 2022.09.13 |
[DA] 4-1. Importing Data from Flat Files (0) | 2022.09.12 |
[DA] 3-4. Case Study: DataCamp (0) | 2022.09.12 |