PublicDataReader๋ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ, ์์ธ ์ด๋ฆฐ๋ฐ์ดํฐ ๊ด์ฅ ๋ฑ ๊ธฐ๊ด์์ ์ ๊ณตํ๊ณ ์๋ ๋ฐ์ดํฐ ๊ด๋ จ OpenAPI ์๋น์ค๋ฅผ Python์ผ๋ก ์ฝ๊ฒ ์ด์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ฐ์ดํฐ ์กฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- Project Owner: ์ ์ฐ์ผ
- E-mail: [email protected]
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์ค๋ช ์
- ์นด์นด์คํก ์คํ์ฑํ
๋ฐฉ ๋งํฌ
- PublicDataReader ์ฌ์ฉ ๊ด๋ จ Q&A๋ฅผ ์ํ ์คํ์ฑํ ๋ฐฉ์ ๋๋ค.
2021๋ 11์ ํ์ฌ ์๋ OpenAPI ์๋น์ค ๊ฐ๊ฐ์ ๋ํด ๋ฐ์ดํฐ๋ฅผ Pandas DataFrame ํํ๋ก ์กฐํํ ์ ์์ต๋๋ค. ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์์ ์ผ๋ก ์ด์ฉํ๊ธฐ ์ํด์๋ ์๋ ์๋น์ค์ ๋ํ OpenAPI ํ์ฉ์ ์ฒญ์ ๋ฐ๋์ ์๋ฃํด์ผํฉ๋๋ค.
- ๊ตญํ ๊ตํต๋ถ ์ค๊ฑฐ๋๊ฐ ์ ๋ณด
- ๊ตญํ ๊ตํต๋ถ ๊ฑด์ถ๋ฌผ๋์ฅ์ ๋ณด ์๋น์ค
- ์์๊ณต์ธ ์๊ฐ์ ์ ์ ๋ณด
- ์์ธ์ ์งํ์ฒ ํธ์ ๋ณ ์ญ๋ณ ์นํ์ฐจ ์ธ์ ์ ๋ณด
- ์์ธ์ ๋ฒ์ค๋ ธ์ ๋ณ ์ ๋ฅ์ฅ๋ณ ์นํ์ฐจ ์ธ์ ์ ๋ณด
์๋น์ค๋ช | ์ํ์ ํ | ๊ฑฐ๋์ ํ |
---|---|---|
์ํํธ๋งค๋งค ์ค๊ฑฐ๋ ์์ธ ์๋ฃ ์กฐํ | ์ํํธ | ๋งค๋งค |
์ํํธ ์ ์์ธ ์๋ฃ ์กฐํ | ์ํํธ | ์ ์์ธ |
์ํํธ ๋ถ์๊ถ์ ๋งค ์ ๊ณ ์๋ฃ ์กฐํ | ๋ถ์์ ์ฃผ๊ถ | ๋งค๋งค |
์คํผ์คํ ๋งค๋งค ์ ๊ณ ์กฐํ | ์คํผ์คํ | ๋งค๋งค |
์คํผ์คํ ์ ์์ธ ์ ๊ณ ์กฐํ | ์คํผ์คํ | ์ ์์ธ |
์ฐ๋ฆฝ๋ค์ธ๋ ๋งค๋งค ์ค๊ฑฐ๋์๋ฃ ์กฐํ | ์ฐ๋ฆฝ๋ค์ธ๋ | ๋งค๋งค |
์ฐ๋ฆฝ๋ค์ธ๋ ์ ์์ธ ์ค๊ฑฐ๋์๋ฃ ์กฐํ | ์ฐ๋ฆฝ๋ค์ธ๋ | ์ ์์ธ |
๋จ๋ /๋ค๊ฐ๊ตฌ ๋งค๋งค ์ค๊ฑฐ๋ ์กฐํ | ๋จ๋ ๋ค๊ฐ๊ตฌ | ๋งค๋งค |
๋จ๋ /๋ค๊ฐ๊ตฌ ์ ์์ธ ์๋ฃ ์กฐํ | ๋จ๋ ๋ค๊ฐ๊ตฌ | ์ ์์ธ |
ํ ์ง ๋งค๋งค ์ ๊ณ ์กฐํ | ํ ์ง | ๋งค๋งค |
์์ ์ ๋ฌด์ฉ ๋ถ๋์ฐ ๋งค๋งค ์ ๊ณ ์๋ฃ ์กฐํ | ์์ ์ ๋ฌด์ฉ | ๋งค๋งค |
์๋น์ค๋ช | ์นดํ ๊ณ ๋ฆฌ๋ช |
---|---|
๊ฑด์ถ๋ฌผ๋์ฅ ๊ธฐ๋ณธ๊ฐ์ ์กฐํ | ๊ธฐ๋ณธ๊ฐ์ |
๊ฑด์ถ๋ฌผ๋์ฅ ์ด๊ดํ์ ๋ถ ์กฐํ | ์ด๊ดํ์ ๋ถ |
๊ฑด์ถ๋ฌผ๋์ฅ ํ์ ๋ถ ์กฐํ | ํ์ ๋ถ |
๊ฑด์ถ๋ฌผ๋์ฅ ์ธต๋ณ๊ฐ์ ์กฐํ | ์ธต๋ณ๊ฐ์ |
๊ฑด์ถ๋ฌผ๋์ฅ ๋ถ์์ง๋ฒ ์กฐํ | ๋ถ์์ง๋ฒ |
๊ฑด์ถ๋ฌผ๋์ฅ ์ ์ ๊ณต์ฉ๋ฉด์ ์กฐํ | ์ ์ ๊ณต์ฉ๋ฉด์ |
๊ฑด์ถ๋ฌผ๋์ฅ ์ค์์ ํ์์ค ์กฐํ | ์ค์์ ํ์์ค |
๊ฑด์ถ๋ฌผ๋์ฅ ์ฃผํ๊ฐ๊ฒฉ ์กฐํ | ์ฃผํ๊ฐ๊ฒฉ |
๊ฑด์ถ๋ฌผ๋์ฅ ์ ์ ๋ถ ์กฐํ | ์ ์ ๋ถ |
๊ฑด์ถ๋ฌผ๋์ฅ ์ง์ญ์ง๊ตฌ๊ตฌ์ญ ์กฐํ | ์ง์ญ์ง๊ตฌ๊ตฌ์ญ |
์๋น์ค๋ช | ์นดํ ๊ณ ๋ฆฌ๋ช |
---|---|
์ง์ ์๊ถ์กฐํ | ์ง์ ์๊ถ |
๋ฐ๊ฒฝ๋ด ์๊ถ์กฐํ | ๋ฐ๊ฒฝ์๊ถ |
์ฌ๊ฐํ๋ด ์๊ถ์กฐํ | ์ฌ๊ฐํ์๊ถ |
ํ์ ๊ตฌ์ญ ๋จ์ ์๊ถ์กฐํ | ํ์ ๊ตฌ์ญ์๊ถ |
๋จ์ผ ์๊ฐ์ ์ ์กฐํ | ๋จ์ผ์๊ฐ |
๊ฑด๋ฌผ๋จ์ ์๊ฐ์ ์ ์กฐํ | ๊ฑด๋ฌผ์๊ฐ |
์ง๋ฒ๋จ์ ์๊ฐ์ ์ ์กฐํ | ์ง๋ฒ์๊ฐ |
ํ์ ๋ ๋จ์ ์๊ฐ์ ์ ์กฐํ | ํ์ ๋์๊ฐ |
์๊ถ๋ด ์๊ฐ์ ์ ์กฐํ | ์๊ถ์๊ฐ |
๋ฐ๊ฒฝ๋ด ์๊ฐ์ ์ ์กฐํ | ๋ฐ๊ฒฝ์๊ฐ |
์ฌ๊ฐํ๋ด ์๊ฐ์ ์ ์กฐํ | ์ฌ๊ฐํ์๊ฐ |
๋ค๊ฐํ๋ด ์๊ฐ์ ์ ์กฐํ | ๋ค๊ฐํ์๊ฐ |
์ ์ข ๋ณ ์๊ฐ์ ์ ์กฐํ | ์ ์ข ๋ณ์๊ฐ |
์์ ์ผ์๊ธฐ์ค ์๊ฐ์ ์ ์กฐํ | ์์ ์ผ์์๊ฐ |
์๊ถ์ ๋ณด ์ ์ข ๋๋ถ๋ฅ ์กฐํ | ์ ์ข ๋๋ถ๋ฅ |
์๊ถ์ ๋ณด ์ ์ข ์ค๋ถ๋ฅ ์กฐํ | ์ ์ข ์ค๋ถ๋ฅ |
์๊ถ์ ๋ณด ์ ์ข ์๋ถ๋ฅ ์กฐํ | ์ ์ข ์๋ถ๋ฅ |
์๋น์ค๋ช | ์นดํ ๊ณ ๋ฆฌ๋ช |
---|---|
์์ธ์ ์งํ์ฒ ํธ์ ๋ณ ์ญ๋ณ ์นํ์ฐจ ์ธ์ ์ ๋ณด | ์งํ์ฒ ์นํ์ฐจ |
์์ธ์ ๋ฒ์ค๋ ธ์ ๋ณ ์ ๋ฅ์ฅ๋ณ ์นํ์ฐจ ์ธ์ ์ ๋ณด | ๋ฒ์ค์นํ์ฐจ |
pip install --upgrade PublicDataReader
pip install pandas==1.3.4
pip install requests==2.26.0
pip install beautifulsoup4==4.10.0
# 1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธํ๊ธฐ
import PublicDataReader as pdr
print(pdr.__version__)
print(pdr.__info__)
# 2. ๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ OpenAPI ์๋น์ค ์ธ์ฆํค ์
๋ ฅํ๊ธฐ
serviceKey = "๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ์์ ๋ฐ๊ธ๋ฐ์ ์๋น์ค ํค"
# 3. ๊ตญํ ๊ตํต๋ถ ์ค๊ฑฐ๋๊ฐ ์ ๋ณด ์กฐํ OpenAPI ์ธ์
์ ์ํ๊ธฐ
# debug: True์ด๋ฉด ๋ชจ๋ ๋ฉ์์ง ์ถ๋ ฅ, False์ด๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ง ์ถ๋ ฅ (๊ธฐ๋ณธ๊ฐ: False)
ts = pdr.Transaction(serviceKey, debug=True)
# 4. ์ง์ญ์ฝ๋(์๊ตฐ๊ตฌ์ฝ๋) ๊ฒ์ํ๊ธฐ
sigunguName = "๋ถ๋น๊ตฌ" # ์๊ตฐ๊ตฌ์ฝ๋: 41135
code = pdr.code_list()
code.loc[(code['์๊ตฐ๊ตฌ๋ช
'].str.contains(sigunguName, na=False)) &
(code['์๋ฉด๋๋ช
'].isna())]
# 5. ์ง์ญ, ์ ๋ณ ๋ฐ์ดํฐ ํ๋ ์ ๋ง๋ค๊ธฐ
prod="์ํํธ" # ๋ถ๋์ฐ ์ํ ์ข
๋ฅ (ex. ์ํํธ, ์คํผ์คํ
, ๋จ๋
๋ค๊ฐ๊ตฌ ๋ฑ)
trans="๋งค๋งค" # ๋ถ๋์ฐ ๊ฑฐ๋ ์ ํ (ex. ๋งค๋งค, ์ ์์ธ)
sigunguCode="41135"
yearMonth="202101"
df = ts.read_data(prod, trans, sigunguCode, yearMonth)
# 6. ์ง์ญ, ๊ธฐ๊ฐ ๋ณ ๋ฐ์ดํฐ ํ๋ ์ ๋ง๋ค๊ธฐ
prod="์ํํธ" # ๋ถ๋์ฐ ์ํ ์ข
๋ฅ (ex. ์ํํธ, ์คํผ์คํ
, ๋จ๋
๋ค๊ฐ๊ตฌ ๋ฑ)
trans="๋งค๋งค" # ๋ถ๋์ฐ ๊ฑฐ๋ ์ ํ (ex. ๋งค๋งค, ์ ์์ธ)
sigunguCode="41135"
startYearMonth="202101"
endYearMonth="202111"
df = ts.collect_data(prod, trans, sigunguCode, startYearMonth, endYearMonth)
# 1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ ๋ฐ ๋ฒ์ ํ์ธํ๊ธฐ
import PublicDataReader as pdr
print(pdr.__version__)
print(pdr.__info__)
# 2. ๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ OpenAPI ์๋น์ค ์ธ์ฆํค ์
๋ ฅํ๊ธฐ
serviceKey = "๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ์์ ๋ฐ๊ธ๋ฐ์ ์๋น์ค ํค"
# 3. ๊ตญํ ๊ตํต๋ถ ๊ฑด์ถ๋ฌผ๋์ฅ์ ๋ณด ์๋น์ค OpenAPI ์ธ์
์ ์ํ๊ธฐ
# debug: True์ด๋ฉด ๋ชจ๋ ๋ฉ์์ง ์ถ๋ ฅ, False์ด๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ง ์ถ๋ ฅ (๊ธฐ๋ณธ๊ฐ: False)
bd = pdr.Building(serviceKey, debug=True)
# 4. ์ง์ญ์ฝ๋(์๊ตฐ๊ตฌ์ฝ๋) ๊ฒ์ํ๊ธฐ
sigunguName = "๋ถ๋น๊ตฌ" # ์๊ตฐ๊ตฌ์ฝ๋: 41135
code = pdr.code_list()
code.loc[(code['์๊ตฐ๊ตฌ๋ช
'].str.contains(sigunguName, na=False)) &
(code['์๋ฉด๋๋ช
'].isna())]
# 5. ๊ฑด์ถ๋ฌผ๋์ฅ์ ๋ณด ์คํผ๋ ์ด์
๋ณ ๋ฐ์ดํฐ ์กฐํ
category = "๊ธฐ๋ณธ๊ฐ์" # ๊ฑด์ถ๋ฌผ๋์ฅ ์ข
๋ฅ (ex. ํ์ ๋ถ, ์ด๊ดํ์ ๋ถ, ์ ์ ๋ถ ๋ฑ)
sigunguCd = "41135" # ์๊ตฐ๊ตฌ์ฝ๋(5)
bjdongCd = "11000" # ์๋ฉด๋์ฝ๋(5)
bun = "0541" # ๋ณธ๋ฒ(4)
ji = "0000" # ๋ถ๋ฒ(4)
df = bd.read_data(category=category, sigunguCd=sigunguCd, bjdongCd=bjdongCd, bun=bun, ji=ji)
# 1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ ๋ฐ ๋ฒ์ ํ์ธํ๊ธฐ
import PublicDataReader as pdr
print(pdr.__version__)
print(pdr.__info__)
# 2. ๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ OpenAPI ์๋น์ค ์ธ์ฆํค ์
๋ ฅํ๊ธฐ
serviceKey = "๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ์์ ๋ฐ๊ธ๋ฐ์ ์๋น์ค ํค"
# 3. ์์๊ณต์ธ ์๊ฐ์
์ ์ ๋ณด ์กฐํ OpenAPI ์ธ์คํด์ค ์์ฑํ๊ธฐ
# debug: True์ด๋ฉด ๋ชจ๋ ๋ฉ์์ง ์ถ๋ ฅ, False์ด๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ง ์ถ๋ ฅ (๊ธฐ๋ณธ๊ฐ: False)
si = pdr.StoreInfo(serviceKey, debug=True)
# 4. ๋ฐ์ดํฐํ๋ ์์ผ๋ก ์๋ฃ ์กฐํํ๊ธฐ
# 4-1. ์ง์ ์๊ถ
category = "์ง์ ์๊ถ"
key = "9174"
df = si.read_data(category=category, key=key)
# 4-2. ๋ฐ๊ฒฝ์๊ถ
category = "๋ฐ๊ฒฝ์๊ถ"
radius = 500
cx = 127.03641615737838
cy = 37.50059843782878
df = si.read_data(category=category, radius=radius, cx=cx, cy=cy)
# 4-3. ์ฌ๊ฐํ์๊ถ
category = "์ฌ๊ฐํ์๊ถ"
minx = 127.0327683531071
miny = 37.495967935149146
maxx = 127.04268179746694
maxy = 37.502402894207286
df = si.read_data(category=category, minx=minx, miny=miny, maxx=maxx, maxy=maxy)
# 4-4. ํ์ ๊ตฌ์ญ์๊ถ
category = "ํ์ ๊ตฌ์ญ์๊ถ"
divId = 'adongCd'
key = '1168058000'
df = si.read_data(category=category,divId=divId, key=key)
# 4-5. ๋จ์ผ์๊ฐ
category = "๋จ์ผ์๊ฐ"
key = '11757465'
df = si.read_data(category=category, key=key)
# 4-6. ๊ฑด๋ฌผ์๊ฐ
category = "๊ฑด๋ฌผ์๊ฐ"
key = '1168011000104940000004966'
df = si.read_data(category=category, key=key)
# 4-7. ์ง๋ฒ์๊ฐ
category = "์ง๋ฒ์๊ฐ"
key = '1165010100108120002'
indsLclsCd = 'Q'
df = si.read_data(category=category, key=key, indsLclsCd=indsLclsCd)
# 4-8. ํ์ ๋์๊ฐ
category = "ํ์ ๋์๊ฐ"
divId = 'adongCd'
key = '1168064000'
indsLclsCd = 'Q'
df = si.read_data(category=category, divId=divId, key=key, indsLclsCd=indsLclsCd)
# 4-9. ์๊ถ์๊ฐ
category = "์๊ถ์๊ฐ"
key = '9368'
indsLclsCd = 'Q'
df = si.read_data(category=category, key=key, indsLclsCd=indsLclsCd)
# 4-10. ๋ฐ๊ฒฝ์๊ฐ
category = "๋ฐ๊ฒฝ์๊ฐ"
radius = '500'
cx = 127.03641615737838
cy = 37.50059843782878
indsLclsCd = 'Q'
df = si.read_data(category=category, radius=radius, cx=cx, cy=cy, indsLclsCd=indsLclsCd)
# 4-11. ์ฌ๊ฐํ์๊ฐ
category = "์ฌ๊ฐํ์๊ฐ"
minx = 127.0327683531071
miny = 37.495967935149146
maxx = 127.04268179746694
maxy = 37.502402894207286
indsLclsCd = 'Q'
df = si.read_data(category=category, minx=minx, miny=miny, maxx=maxx, maxy=maxy, indsLclsCd=indsLclsCd)
# 4-12. ๋ค๊ฐํ์๊ฐ
category = "๋ค๊ฐํ์๊ฐ"
key = 'POLYGON((127.02355609555755 37.504264372557095, 127.02496157306963 37.50590702991155, 127.0270858825753 37.50486867039889, 127.02628121988377 37.503489842823114))'
indsLclsCd = 'Q'
df = si.read_data(category=category, key=key, indsLclsCd=indsLclsCd)
# 4-13. ์
์ข
๋ณ์๊ฐ
category = "์
์ข
๋ณ์๊ฐ"
divId = 'indsLclsCd'
key = 'Q'
df = si.read_data(category=category, divId=divId, key=key)
# 4-14. ์์ ์ผ์์๊ฐ
category = "์์ ์ผ์์๊ฐ"
key = '20200101'
indsLclsCd = 'Q'
df = si.read_data(category=category, key=key, indsLclsCd=indsLclsCd)
# 4-15. ์
์ข
๋๋ถ๋ฅ
category = "์
์ข
๋๋ถ๋ฅ"
df = si.read_data(category=category, key=key)
# 4-16. ์
์ข
์ค๋ถ๋ฅ
category = "์
์ข
์ค๋ถ๋ฅ"
indsLclsCd = 'Q'
df = si.read_data(category=category, key=key, indsLclsCd=indsLclsCd)
# 4-17. ์
์ข
์๋ถ๋ฅ
category = "์
์ข
์๋ถ๋ฅ"
indsLclsCd = 'Q'
indsMclsCd = 'Q01'
df = si.read_data(category=category, key=key, indsLclsCd=indsLclsCd, indsMclsCd=indsMclsCd)
# 1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ ๋ฐ ๋ฒ์ ํ์ธํ๊ธฐ
import PublicDataReader as pdr
print(pdr.__version__)
print(pdr.__info__)
# 2. ์์ธ ์ด๋ฆฐ๋ฐ์ดํฐ ๊ด์ฅ OpenAPI ์๋น์ค ์ธ์ฆํค ์
๋ ฅํ๊ธฐ
serviceKey = "์์ธ ์ด๋ฆฐ๋ฐ์ดํฐ ๊ด์ฅ์์ ๋ฐ๊ธ๋ฐ์ ์๋น์ค ํค"
# 3. ๊ตญํ ๊ตํต๋ถ ๊ฑด์ถ๋ฌผ๋์ฅ์ ๋ณด ์๋น์ค OpenAPI ์ธ์
์ ์ํ๊ธฐ
# debug: True์ด๋ฉด ๋ชจ๋ ๋ฉ์์ง ์ถ๋ ฅ, False์ด๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ง ์ถ๋ ฅ (๊ธฐ๋ณธ๊ฐ: False)
tp = pdr.Transportation(serviceKey, debug=True)
# 4. ์์ธ์ ์งํ์ฒ ํธ์ ๋ณ ์ญ๋ณ ์นํ์ฐจ ์ธ์ ์ ๋ณด
category = "์งํ์ฒ ์นํ์ฐจ"
date = "20211001"
df = tp.read_data(category=category, date=date)
# 5. ์์ธ์ ๋ฒ์ค๋
ธ์ ๋ณ ์ ๋ฅ์ฅ๋ณ ์นํ์ฐจ ์ธ์ ์ ๋ณด
category = "๋ฒ์ค์นํ์ฐจ"
date = "20211001"
df = tp.read_data(category=category, date=date)