๐ ์์ํ๊ธฐ์ ์์
ํ์ฌ์์ ํ๋ก์ ํธ์ ์ ๋ฌด๋ฅผ ์งํํ๋ฉด์ ๋ฐ์ดํฐ ์ํคํ ํธ(DA) ์ ๋ฌด ํน์ฑ์ SQL ํ๋ก๊ทธ๋๋ฐ์ ๋ง์ด ํ๊ณ ์๋ค. ๊ทธ๋ฌ๋ค ๋ฌธ๋ ์์ผ๋ก์ ๋ด๊ฐ ๋ ๋ค์ํ ์ ๋ฌด๋ฅผ ๋งก์ผ๋ ค๋ฉด SQL์ธ์ ๊ฐ๋ฐ ๊ณต๋ถ๋ ๊พธ์คํ ํด์ผ๋๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ด๋ฐ ์๊ฐ์ ๊ฐ์ง๊ณ ์๋์ด ๋ถ๋ค๊ป ํ์ ์ด๋ป๊ฒ ๊ณต๋ถํ์ จ๋์ง, ์ด๋ค ์์ผ๋ก ์ฑ์ฅํ๋๊ฒ ์ข์์ง์ ๋ํด์๋ ๋ง์ด ๋ฌผ์ด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค. ์ด ์๊ฐ์ ํตํด ๋๋ 'ํธ๊ธฐ์ฌ์ ๊ฐ์ง๊ณ ๊ถ๊ธํ๊ฒ ์๊ธธ๋๋ง๋ค ์ฐพ์๋ณด๊ณ ๋ด๊ฒ ํ์ํ ์ญ๋์ ํ๋์ฉ ์ฑ์๋๊ฐ์'๋ผ๋ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ๊ฒ ๋์๋ค. ๊ทธ๋์ ๋๋ ์ ์ฌ ์ (ํ๋ถ์ ์ธํด ์ํ ๋์) ๊พธ์คํ ์งํํ๋ Python ๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ๋ค์ ์์ํด๋ณด๊ฒ ๋์๊ณ , ์ด ์๊ฐ์ ๋ธ๋ก๊ทธ์ ๊ธฐ๋กํ๊ฒ ๋์๋ค.
์ฐ์ , ๊ฐ์ฅ ๋ง์ ๋ฐ์ดํฐ์ ์ ํ์ฉํ ์ ์์ผ๋ฉด์ ์ปค๋ฎค๋ํฐ ์ฑ๋์ด ํ์ฑํ ๋์ด์๋ 'Kaggle' ์ฌ์ดํธ๋ฅผ ์ด์ฉํ๊ธฐ๋ก ํ๋ค. ํด๋น ์ฌ์ดํธ์์๋ Python, SQL, Modeling ๋ฑ ๋ค์ํ ๋ถ์ผ์ ํํ ๋ฆฌ์ผ๊ณผ ์์ ์ฐ์ต์ ํ ์ ์๋๋ก ๋์์ค๋ค. ๋๋ฌด ์ค๋๋ง์ Python ํ๋ก๊ทธ๋๋ฐ์ ์์ํ๊ฒ ๋ ํฐ๋ผ ๊ฐ๋จํ ํํ ๋ฆฌ์ผ์ ํตํด ์ ๊ธฐ์ต์ ๋์ด๋ ค๋ณด๊ณ ์ ํ๋ค.
๐์ด๋ฒ ์์ ์์ ์ฐธ๊ณ ํ ์ฌ์ดํธ
https://www.kaggle.com/learn/intro-to-sql
Learn Intro to SQL Tutorials
Learn SQL for working with databases, using Google BigQuery.
www.kaggle.com
์ค์ต1: Google BigQuery
BigQuery๋ ๋น ๋ฐ์ดํฐ์ ๋ํ SQL ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅธ ์๋๋ก ์ํํด์ฃผ๋ google cloud platform ์๋น์ค ์ค ํ๋๋ก, PB(ํํ๋ฐ์ดํธ) ์ฉ๋์ ๋ฐ์ดํฐ๋ ๋น ๋ฅด๊ฒ ๋ถ์ํ ์ ์๋ ๊ฒ์ด ํน์ง์ด๋ค. ๋ณธ ์ค์ต์์๋ BigQuery๋ฅผ ์ด์ฉํ SQL ์ฒ๋ฆฌ๋ฅผ ํด๋ณผ ๊ฒ์ด๋ค.
#BigQuery๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํจํค์ง ์ค์น
from google.cloud import bigquery
#Client ๊ฐ์ฒด ์์ฑ
client = bigquery.Client()
#BigQuery๋ด์ 'hacker_news' ๋ฐ์ดํฐ์
์ ์ค์ต์ ์ด์ฉ
dataset_ref = client.dataset("hacker_news", project="bigquery-public-data")
dataset = client.get_dataset(dataset_ref)
#'hacker_news' ๋ฐ์ดํฐ์
์ ์๋ ํ
์ด๋ธ ๋ฆฌ์คํธ ๋ถ๋ฌ์ค๊ธฐ
tables = list(client.list_tables(dataset))
#ํด๋น ํ
์ด๋ธ ๋ฆฌ์คํธ์์ ์๋ ํ
์ด๋ธ๋ช
ํ์ธ
for table in tables:
print(table.table_id)
#'full'๋ช
์นญ์ ํ
์ด๋ธ ๋ถ๋ฌ์ค๊ธฐ
table_ref = dataset_ref.table("full")
table = client.get_table(table_ref)
1.ํ ์ด๋ธ ์ปฌ๋ผ ์ ๋ณด
.schema ๊ธฐ๋ฅ์ผ๋ก ํด๋น ํ ์ด๋ธ์ด ๊ฐ์ง ์ปฌ๋ผ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ผ๋ฉฐ, (์ปฌ๋ผ๋ช /์ปฌ๋ผ๋ฐ์ดํฐํ์ /NULL๊ฐ๋ฅ์ฌ๋ถ/์ปฌ๋ผ์ค๋ช ๋ฑ)์ ๋ํด ํ์ธํ ์ ์๋ค.
#'full' ํ
์ด๋ธ์ ์ปฌ๋ผ ์ ๋ณด ํ์ธ
table.schema
2.๋ฐ์ดํฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
(1) ํน์ ๊ฐฏ์์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ๋ณด๋ ๋ฐฉ๋ฒ
#'full' ํ
์ด๋ธ์ n๊ฐ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
#๋ฏธ๋ฆฌ๋ณด๊ณ ์ถ์ ํ์ ๊ฐ์๊ฐ n์ด๋ผ๋ฉด, max_result=n ์ผ๋ก ์ค์
client.list_rows(table, max_results=5).to_dataframe()
(2) ํน์ ๊ฐฏ์์ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณด๋ ๋ฐฉ๋ฒ(+ํ ๊ฐฏ์๋ ์ค์ ๊ฐ๋ฅ)
#'full' ํ
์ด๋ธ์ n๊ฐ์ ์ด๊ณผ m๊ฐ์ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
#๋ฏธ๋ฆฌ๋ณด๊ณ ์ถ์ ์ด์ ๊ฐฏ์๊ฐ n์ด๋ผ๋ฉด, table.schema[:n]์ผ๋ก ์ค์
#๋ฏธ๋ฆฌ๋ณด๊ณ ์ถ์ ํ์ ๊ฐฏ์๊ฐ m์ด๋ผ๋ฉด, max_results=m์ผ๋ก ์ค์
client.list_rows(table, selected_fields=table.schema[:3], max_results=5).to_dataframe()
์ด๋ฒ ์ค์ต์์๋ ๊ฐ๋จํ BigQuery์์ ์ ๊ณตํ๋ ๋ฐ์ดํฐ์ ์ ํ ์ด๋ธ์ ๋ถ๋ฌ์๊ณ , ์ค์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด๋ณด๋ ๊ณผ์ ์ ๋ค์ ์๊ฐ์ ์งํํด๋ณผ ๊ฒ์ด๋ค.
'[๊ธฐ์ ๊ณต๋ถ] > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kaggle] Google BigQuery๋ฅผ ํ์ฉํ Python ํ๋ก๊ทธ๋๋ฐ(2) (0) | 2023.07.30 |
---|