ํฌ์คํ ์ฃผ์
์ฐ๋ฆฌ ์ฌํ๋ ๋ฐ์ดํฐ ์ค์ฌ์ ์๋๋ก ์ง์
ํ๋ค. ์ด์ ํ์ฌ์์๋, ๊ฐ์ธ์ ์ธ ์ฌ์
์์๋ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ ์ํ ์ค์ํ ์๋ฃ๊ฐ ๋ ๊ฒ์ด ๋น
๋ฐ์ดํฐ์ด๋ค. ์์ผ๋ก ๊ณต๊ณต๋ฐ์ดํฐ ๋ฐ ์คํ๋ฐ์ดํฐ API๋ฅผ ์ด๋ป๊ฒ ์ธ์ฆํค ๋ฐ๊ธ / ๋ฑ๋กํด์ ์ด์ฉํ๊ณ ๊ฐ๊ณตํด์ ํ์ฉํ ์ ์๋์ง ์ ๋ฆฌํด ๋ณผ ๊ฒ์ด๋ค.
์คํ API ๋?
Open API
Open API๋ '๊ณต๊ฐ API'๋ผ๋ ๋ป์ผ๋ก, ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋๋ก ๊ณต๊ฐ๋ API์ด๋ค. ๋๋ถ๋ถ Rest API ๊ธฐ์ ์ ํ์ฉํ์ฌ ๊ตฌํ๋๋ค. API๋ Application Programming Interface์ ์ฝ์๋ก, ์์ฉ ํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค์ด๋ค. ๊ฐ๋จํ ๋งํ๋ฉด ์ด๋ฏธ ์ด๋ค ์ฌ์ดํธ์์ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์์ ๋ค๋ฅธ ์ฌ์ดํธ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋์ ์ฃผ๋ ๋๊ตฌ์ด๋ค. ์๋ฅผ ๋ค๋ฉด ํธ์ํฐ์ API๋ฅผ ํตํด ๋ค๋ฅธ ์ฑ์์ ํธ์ํฐ ๊ณ์ ์ ๊ธ์ ์ฌ๋ฆฌ๊ฑฐ๋, ๊ตฌ๊ธ ์ง๋ API๋ฅผ ํตํด ์ฑ์ ์ง๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค. ๋ค์ด๋ฒ๋ ์นด์นด์ค, ๊ตฌ๊ธ API๋ฅผ ์ฐ๋ฉด ์์
๋ก๊ทธ์ธ์ ๊ตฌํ ํ ์ ์๋ค.
Rest API
Rest API(Representational State Transfer API)๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ท์ฝ ์ค ํ๋๋ก, HTTP ํ๋กํ ์ฝ์ ํตํด ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํจ์์ด๋ค. Rest API๋ URL ๋ฌธ์์ด์ ์ ํด์ง ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค. ์๋ต์ ์ฃผ๋ก XML ๋๋ JSON ํํ๋ก ์ถ๋ ฅ๋๋ค.
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ
๊ณต๊ณต๋ฐ์ดํฐํฌํธ(data.go.kr)์ ๋ค์ํ ๊ณต๊ณต ๋ฐ์ดํฐ๋ฅผ Open API ํํ๋ก ์ ๊ณตํ๋ฉฐ ๋๊ตฌ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์์งํ ์ ์๋ค. ๊ณต๊ณต๋ฐ์ดํฐํฌํธ์ ๋ก๊ทธ์ธํด์ ์ฌ์ดํธ ๋ด์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ฌ ๊ด๋ จ Open API๋ฅผ ์ฐพ๋๋ค. ์ฐธ๊ณ ๋ฌธ์์์ ์๋น์ค ํ์ฉ ๊ฐ์ด๋๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ํด๋น API์ ๊ตฌ์กฐ์ ํ์ฉ ๋ฐฉ๋ฒ์ ํ์
ํ๊ณ ์์ธ ๊ธฐ๋ฅ ํญ์์ "ํ์ฉ์ ์ฒญ" ๋ฒํผ์ ํด๋ฆญํ์ฌ API ์ฌ์ฉ ๊ถํ์ ์ป๋๋ค. ํญ์ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฑด ์๋๊ณ ์น์ธ์ด ๋ ๋๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ๋ ํ๋ค. ๊ฐ๋ฐ๊ณ์ ์ ์ฌ์๊ตฌ๋ถ์ด ์๋์น์ธ์ด๋ฉด ์ ์ฒญ ํ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋. ๋ฐ์ดํฐ๋ ์ฃผ๋ก CSV, Json, Xml ํ์์ผ๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์ด๊ฑธ SQL ์ฟผ๋ฆฌ๋ฌธ์ด๋ python, javascript ๋ฑ์ผ๋ก ๊ฐ๊ณตํด์ ์ฌ์ฉํด์ผ ํ๋ค.
๊ฐ๋ฐํ๊ฒฝ
์๋ ํด ์ต์ ๋ฒ์ ์ฌ์ฉ ๊ถ์ฅ
- Eclipse IDE
- Notepad++ (Google colab๋ณด๋ค๋ ๋น์ถ)
- google colab
- Python
- Bootstrap
- Chrome Browser
๋๋ Google Colab์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
ํ์ง๋ง Notepad++๋ก ํ์ด์ฌ ์ฝ๋ ์คํํ ์ ์๋๋ก ํ๊ฒฝ์ค์ ํ๋ ๋ฒ๋ ํจ๊ป ํฌ์คํ
ํ๋ค.
๊ตฌ๊ธ ์ฝ๋ฉ์ ์ฐ๋ฉด Notepad++๋ ์ค์นํ ํ์๊ฐ ์๋ค.
Notepad++ ์์ ํ์ด์ฌ ์ฝ๋ ์คํ ํ๋ฌ๊ทธ์ธ ์ค์น
โ ํ๋ฌ๊ทธ์ธ > ํ๋ฌ๊ทธ์ธ ๊ด๋ฆฌ > NppExec > ์ค์น
NppExec ํ๋ฌ๊ทธ์ธ ์ค์นํ๊ณ ๋จ์ถํค F6 ๋๋ฅด๋ฉด ์ฝ๋๋ฅผ ๋ฐ๋ก ์ปดํ์ผํด์ ์คํ ๊ฐ๋ฅ
๋จผ์ ํด๋์ ํ์ด์ฌ ํ์(test.py ๋ฑ)์ผ๋ก ์ ์ฅ > F6 > ์๋ ์ฝ๋ ์คํฌ๋ฆฝํธ์ฐฝ์ ์
๋ ฅ
python "$(FULL_CURRENT_PATH)"
๊ทธ๋ผ Notepad++ ๋ด์์ ํ๋จ์ NppExec ์ฝ์์ด ์๊ธฐ๋ฉด์ ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๊ฐ ํ๋ฉด์ ๋ณด์ฌ์ง๋ค.
์๋ Welcome to Korea ๋ผ๋ ๊ฒ์ด ๋ ์ผ ํ๋๋ฐ Exit code 9009 ์๋ฌ๊ฐ ๋ธ.
๋น์ฐํ ํ์ด์ฌ์ ์คํํ๋ ค๋ฉด ๋จผ์ ํ์ด์ฌ์ด PC์ ์ค์น๊ฐ ๋์ด ์์ด์ผ ํ๋ค.
python ๋ช
๋ น์ด๊ฐ ์ ๋๋ก ์คํ๋๊ธฐ ์ํด์๋ Python ์ค์น ๊ฒฝ๋ก๊ฐ ํ๊ฒฝ ๋ณ์ PATH์ ํฌํจ๋์ด ์์ด์ผ ํ๋ค.
python์ด ์ ๋๋ก ์ค์น๋์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ
๋ช
๋ น ํ๋กฌํํธ ์ด๊ธฐ (Win + R → cmd ์
๋ ฅ → Enter)
python --version
๋ฒ์ ์ด ํ์๋์ง ์๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, Python ์คํ ๊ฒฝ๋ก๊ฐ PATH์ ์ค์ ๋์ง ์์ ๊ฒ์ด๋ค.
Python ์ค์น๋ ๊ฒฝ๋ก๋ฅผ ์์คํ
ํ๊ฒฝ๋ณ์์ ์ถ๊ฐํด ์ฃผ์ด์ผ ํ๋ค.
์ ์ดํ → ์์คํ
→ ๊ณ ๊ธ ์์คํ
์ค์ → ํ๊ฒฝ ๋ณ์
Path๋ฅผ ํธ์ง → Python ๊ฒฝ๋ก ์ถ๊ฐ (์: C:\Python39\).
ํ์ด์ฌ ์ค์น๋ ํ๊ฒฝ๋ณ์ ์ค์ ๋ฒ์ ์๋ ํฌ์คํ
์ฐธ์กฐ
https://awesomepossum.tistory.com/468
๊ตฌ๊ธ ์ฝ๋ฉ ์ฐ๋ฉด ์ ๊ณผ์ ์ ์ ๊ฑฐ์ณ๋ ๋๋ค.
๋ฐ์ดํฐ ๋ค๋ฃฐ ๋ Google Colab ์ถ์ฒํ๋ ์ด์
๋ณดํต ํ์ด์ฌ ์ฒ์ ๋ฐฐ์ฐ๋ ์ฌ๋๋ค์ ์ฃผํผํฐ ๋
ธํธ๋ถ์ด๋ VSCode ๋ฅผ ์ด๋ค.
ํ์ง๋ง ์ด์ ๋์ธ๋ ๊ตฌ๊ธ ์ฝ๋ฉ์ด๋ค.
Google Colab์ Notepad++ ๋ณด๋ค ์ง๊ด์ ์ด๊ณ ๋จ์ถํค๋ก ์ฝ๊ฒ ํ์ด์ฌ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ ์ ์๋ค.
ํนํ ๋ฐ์ดํฐ ๋ถ์, ๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋, ๊ทธ๋ฆฌ๊ณ ํ์ด์ฌ ์ฝ๋ฉ์ ์ํ ์จ๋ผ์ธ ํ๊ฒฝ์์ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์ด๋ค!
1. ์ค์น๊ฐ ์ฝ๋ค. ๊ทธ๋ฅ ์น ๋ธ๋ผ์ฐ์ ๋ง ์์ผ๋ฉด ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ๊ณ Python ๊ด๋ จ ์ค์ ์ ๋ฐ๋ก ํ ํ์๊ฐ ์์ด ๋ฐ๋ก ์์
ํ ์ ์๋ค.
2. ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ฐ๋์์ ๋ฐ๋ก ์คํํ๊ณ ์ ์ฅํ ์ ์์ด์ ์ปดํจํฐ ์ฌ์์ ๊ตฌ์ ๋ฐ์ง ์๋๋ค.
3. ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: NumPy, Pandas, TensorFlow, Keras, PyTorch ๋ฑ)๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๊ณ ์ถ๊ฐ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ถ์ผ๋ฉด !pip install ๋ช
๋ น์ด๋ก ๋ฐ๋ก ์ค์นํ๊ณ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
4. ์์
ํ ๋ด์ฉ์ ์๋์ผ๋ก Google Drive์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ธ์
์ด ์ข
๋ฃ๋๋๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์์ด๋ฒ๋ฆฌ์ง ์๋๋ค. ๊ณต์ ๋งํฌ๋ฅผ ํตํด ๋ค๋ฅธ ์ฌ๋๊ณผ ์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ณต์ ํ๊ณ ํจ๊ป ์์
ํ ์ ์๋ค.
https://colab.research.google.com/
์ฌ๊ธฐ ๋ค์ด๊ฐ์ `์ ํ์ผ ์ถ๊ฐ`ํด์ ์ฐ๋ฉด ๋จ
๋ฉ๋ด์์ `Tools(๋๊ตฌ) → Keyboard shortcuts` ์ ํํ๋ฉด ๋จ์ถํค ๋ชจ์์ ํ์ธํ ์ ์๋ค.
๊ธฐ๋ณธ ๋จ์ถํค
1. ์
์คํ ๋ฐ ์คํ ๊ด๋ จ
Shift + Enter: ํ์ฌ ์ ์คํ ๋ฐ ๋ค์ ์ ๋ก ์ด๋
Ctrl + Enter (๋๋ Cmd + Enter): ํ์ฌ ์ ์คํ (์์น ์ ์ง)
Alt + Enter: ํ์ฌ ์ ์คํ ๋ฐ ์๋์ ์ ์ฝ๋ ์ ์ฝ์
2. ์
์ถ๊ฐ/์ญ์
Ctrl + M B (๋๋ Cmd + M B): ์๋์ ์ฝ๋ ์ ์ถ๊ฐ
Ctrl + M A (๋๋ Cmd + M A): ์์ ์ฝ๋ ์ ์ถ๊ฐ
Ctrl + M D (๋๋ Cmd + M D): ํ์ฌ ์ ์ญ์
3. ์
์ด๋
Ctrl + M K (๋๋ Cmd + M K): ํ์ฌ ์ ์ ์๋ก ์ด๋
Ctrl + M J (๋๋ Cmd + M J): ํ์ฌ ์ ์ ์๋๋ก ์ด๋
4. ์
์ ํ ๋ณ๊ฒฝ
Ctrl + M Y (๋๋ Cmd + M Y): ์ ์ ์ฝ๋ ์ ๋ก ๋ณ๊ฒฝ
Ctrl + M M (๋๋ Cmd + M M): ์ ์ ๋งํฌ๋ค์ด ์ ๋ก ๋ณ๊ฒฝ
ํธ์ง ๊ด๋ จ ๋จ์ถํค
1. ์คํ ์ทจ์/์ฌ์คํ
Ctrl + Z: ์คํ ์ทจ์
Ctrl + Shift + Z: ์ฌ์คํ
2. ํ
์คํธ ์ ๋ฆฌ
Ctrl + [: ๋ค์ฌ์ฐ๊ธฐ ์ค์ด๊ธฐ
Ctrl + ]: ๋ค์ฌ์ฐ๊ธฐ ๋๋ฆฌ๊ธฐ
3. ์ฝ๋ ํฌ๋งทํ
(Python ์ฝ๋ ์ ๋ ฌ)
Ctrl + Shift + \: ์ฝ๋ ์๋ ํฌ๋งทํ (์ค์น๋ ํฌ๋งคํฐ ํ์)
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์์ ๋ฐ์ดํฐ ํ์ฉ ์ ์ฒญํ๊ธฐ
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ ์ ์
https://www.data.go.kr/index.do
๊ฒ์์ฐฝ์์ ์ํ๋ ๋ฐ์ดํฐ ๊ฒ์
๋ฐ์ดํฐ ์ฐ์ธก์ `ํ์ฉ์ ์ฒญ` ๋ฒํผ ํด๋ฆญ
ํ์ฉ์ ์ฒญ ๋๋ฅธ ํ ์ ์ฒญ ๋ชฉ์ ์ ์ ๋ ฅํ๊ธฐ
์น์ฌ์ดํธ ๊ฐ๋ฐ์ฉ์ผ๋ก ์ค์ ํด์ฃผ์๋ค.
๋ง์ดํ์ด์ง > API ์ ์ฒญ์ผ๋ก ๊ฐ๋ฉด ์ ์ฒญํ API์ ํ์ฉ๊ฐ๋ฅํ API ์ ๋ชฉ๋ก์ด ๋ณด์ฌ์ง๋ค.
๊ทธ๋ฆฌ๊ณ API ์ฌ์ฉ๊ธฐ๊ฐ์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ง๋ฃ์ผ ์์ ์ฌ์ฉํด์ผ ํ๋ค.
API์ ์ฌ์ฉ๊ธฐํ์ ๋ณดํต 2๋ ์ด๋ค.
๋ฐ์ดํฐ ํ์ฉ์ด ์น์ธ๋๋ฉด ์ธ์ฆํค 2๊ฐ๊ฐ ๋ฐ๊ธ๋๋ค.
์ด ์ค์ ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ค๋์ ์ฌ๊ธฐ๊น์ง๋ง ํฌ์คํ ํ๊ณ ๋ด์ผ ์ด์ด์ ์์ฑํ๋ค!