본문 바로가기

Biusiness Insight/Data Science

[구글 클라우드] AI Platform Notebooks & BigQuery 를 사용한 데이터 분석

반응형

실습 노트(Jupyter Notebooks) 샘플 첨부 : 

sample_notebooks.html
0.32MB

 

(source : GCP qwiklabs)

 

BigQuery 호출

BigQuery Console 열기

1. Navigation menu > BigQuery 클릭

 

2. Done 클릭

 

3. Query 텍스트 박스에서 아래 내용 입력 후, Run 클릭

#standardSQL 
SELECT
   departure_delay, 
   COUNT(1) AS num_flights, 
   APPROX_QUANTILES(arrival_delay, 5) AS arrival_delay_quantiles
FROM 
   `bigquery-samples.airline_ontime_data.flights`
GROUP BY 
   departure_delay 
HAVING 
   num_flights > 100
RDER BY 
   departure_delay ASC

 

- 35분 일찍 출발한 항공편의 평균 도착 지연 시간은?

- 결과 : 28 분

 

4. 최대 항공편 수를 가진 공항페어(출발공항-도착공항)을 찾기위한 SQL 작성

#standardSQL 
SELECT 
   departure_airport, 
   arrival_airport, 
   COUNT(1) AS num_flights 
FROM
   `bigquery-samples.airline_ontime_data.flights` 
GROUP BY
   departure_airport, arrival_airport 
ORDER BY 
   num_flights DESC
LIMIT 10

 

AI Platform Notebooks 에서 그래프 그리기

 

1. Navigation Menu > AI Platform >Notebooks 클릭

 

2. [New Instance] 버튼 클릭

- Tensorflow Enterprise 1.15 > Without GPUs 선택

 

3. 팝업창이 뜨면 딥러닝 VM 이름을 입력/확인하고 Create 클릭

 

(VM 생성까지 2~3분 정도 소요될 수 있음)

 

4. Open JupyterLab 클릭 > JupyterLab window가 새창으로 열림

 

5. JupyterLab에서 노트북 생성 : Notebook > Python 3 클릭

 

6. 아래 파이썬 코드를 입력하고 Run (Ctrl + Enter)

query="""
SELECT 
   departure_delay,
   COUNT(1) AS num_flights,
   APPROX_QUANTILES(arrival_delay, 10) AS arrival_delay_deciles
FROM 
   `bigquery-samples.airline_ontime_data.flights`
GROUP BY
   departure_delay HAVING num_flights > 100
ORDER BY
   departure_delay ASC
""" 

from google.cloud import bigquery
df = bigquery.Client().query(query).to_dataframe()
df.head()

 

실행결과 : (BigQuery 에서 pandas dataframe으로 결과 확인 가능)

 

7. 새 코드 Cell을 생성한 후, 아래 파이썬 코드를 입력하고 Run (Ctrl + Enter)

import pandas as pd
percentiles = df['arrival_delay_deciles'].apply(pd.Series)
percentiles = percentiles.rename(columns = lambda x : str(x*10) + "%")
df = pd.concat([df['departure_delay'], percentiles], axis=1)
df.head()

 

실행 결과 :

 

8. 새 코드 Cell을 생성한 후, 아래 파이썬 코드를 입력하고 Run (Ctrl + Enter)

without_extremes = df.drop(['0%', '100%'], 1)
without_extremes.plot(x='departure_delay', xlim=(-30,50), ylim=(-50,50));

실행 결과 : 

 

- 비행기의 도착 지연을 예측하기 위한 ML(기계학습) 모델을 만든다고 가정했을 때, 출발 지연(departure delay)이 좋은 입력 feature 일까?

> 플로팅(plotting) 명령에서 xlim 과 ylim 을 제거해보면 확인 가능

 

 

반응형