๐ฅ ์งํ์ฒ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ์๋ ๋งํฌ์์ ์งํ์ฒ ์ญ์ฌ ์์น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด API ์ ์ฒญ์ ํ๋ค.
- ๊ณต๊ณต๋ฐ์ดํฐ์์ API ํฌ๋กค๋ง๊ณผ url์ด ์ฝ๊ฐ ๋ค๋ฅด๋ ์๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข๋ค!
https://t-data.seoul.go.kr/category/dataviewopenapi.do?data_id=1036
import requests
# API ํค
apikey = '---์ง์ ์
๋ ฅ-----'
# API ์๋ํฌ์ธํธ์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ์ค์
base_url = 'https://t-data.seoul.go.kr/apig/apiman-gateway/tapi/TaimsKsccDvSubwayStationGeom/1.0'
params = {
'apiKey': apikey,
'startRow': '1',
'rowCnt': '100000'
}
# GET ์์ฒญ ๋ณด๋ด๊ธฐ
req = requests.get(base_url, params=params)
# ์๋ต JSON ํ์ฑ
json_df = req.json()
"""[{'outStnNum': '4128',
'stnKrNm': '์ผ์ฑ์ค์',
'lineNm': '9ํธ์ (์ฐ์ฅ)',
'convX': '127.053282',
'convY': '37.513011'},
{'outStnNum': '4124',
'stnKrNm': '์ฌํ',
'lineNm': '9ํธ์ ',
'convX': '127.015259',
'convY': '37.504206'},"""
import pandas as pd
sub = pd.DataFrame(json_df)
sub
โก ์ปฌ๋ผ๋ช ๋ณ๊ฒฝ
sub.drop('outStnNum', axis = 1, inplace = True)
sub.rename(columns = {'stnKrNm':'์งํ์ฒ ์ญ', 'convX':'์๋', 'convY':'๊ฒฝ๋', 'lineNm':'ํธ์ ๋ช
'}, inplace = True)
sub.head()
โก ๊ฐ๋จ๊ตฌ ์ถ์ถ
- ๊ฐ๋จ๊ตฌ์ ์ํ ์งํ์ฒ ์ญ๋ง ๋ฆฌ์คํธ๋ก ์ ์ฅ
- ํด๋น ๋ฆฌ์คํธ์ ์ผ์นํ๋ ์งํ์ฒ ๋ง ์ถ์ถ
- ๊ทธ๋ฐ๋ฐ, ์ผ๋ถ ์งํ์ฒ ์๋์ ๊ฒฝ๋๊ฐ ํธ์ ์ ๋ฐ๋ผ ์์ดํ ๊ฒ์ ํ์ธํ์ฌ ์ด๋ฅผ ๋ฐ๋ก ํ์ธํ๊ธฐ๋ก ํ๋ค.
station_list = [
"๊ฐ๋จ๊ตฌ์ฒญ",
"๊ฐ๋จ",
"๊ฐํฌ๋",
"๊ตฌ๋ฃก",
"๋
ผํ",
"๋๋ชจ์ฐ์
๊ตฌ",
"๋์ฒญ",
"๋์น",
"๋๊ณก",
"๋งค๋ด",
"๋ด์์ฌ",
"์ผ์ฑ(๋ฌด์ญ์ผํฐ)",
"์ผ์ฑ์ค์",
"์ ๋ฆ",
"์ ์ ๋ฆ",
"์์",
"์ ๋
ผํ",
"์ ์ฌ",
"์๊ตฌ์ ๋ก๋ฐ์ค",
"์๊ตฌ์ ",
"์์ฌ",
"์ธ์ฃผ",
"์ญ์ผ",
"์ผ์",
"์ฒญ๋ด",
"ํ๋",
"ํ์ฌ์ธ",
"ํํฐ"
]
gangnam_sub = sub[sub['์งํ์ฒ ์ญ'].isin(station_list)]
gangnam_sub.head()
โก ์๋/๊ฒฝ๋ ์ธํธ๊ฐ 2๊ฐ ์ด์์ธ ์งํ์ฒ ์ถ์ถ
- ๊ฐ๋จ๊ตฌ์ 28๊ฐ ์ญ ์ค, 9๊ฐ์ ์ญ์ด ํธ์ ์ ๋ฐ๋ผ ์๋์ ๊ฒฝ๋๊ฐ ์ด์ง ๋ค๋ฅธ ๊ฒ์ ํ์ธ
- 9๊ฐ ๋ ธ์ ์ ์๋ ๊ฒฝ๋ ์ฐจ์ด๊ฐ ํฌ์ง ์์ ํ๊ท ๋ด๊ธฐ๋ก ๊ฒฐ์
station_count = gangnam_sub['์งํ์ฒ ์ญ'].value_counts()
station_2pos = station_count[station_count >= 2].index.tolist()
station_2ps_df = gangnam_sub[gangnam_sub['์งํ์ฒ ์ญ'].isin(station_2pos)]
station_2ps_df.sort_values('์งํ์ฒ ์ญ')
station2s = station_2ps_df.drop('ํธ์ ๋ช
', axis = 1)
station2s.reset_index(drop=True)
โก ์๋/๊ฒฝ๋๋ฅผ object ->> float ๋ก ์์ ํ, ์๋/๊ฒฝ๋ ํ๊ท ๊ฐ ๋์ถ
station2s[['์๋', '๊ฒฝ๋']] = station2s[['์๋', '๊ฒฝ๋']].astype(float)
double_positions = station2s.groupby('์งํ์ฒ ์ญ')[['์๋', '๊ฒฝ๋']].mean()
display(len(double_positions), double_positions)
โก ์๋/๊ฒฝ๋๊ฐ 1๊ฐ ๋จ์ผ๊ฐ์ธ ๊ฐ๋จ ์งํ์ฒ ์ญ ์ ์ฒ๋ฆฌ
- 2๊ฐ ์์น ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์ ๋์ผํ๊ฒ ์ปฌ๋ผ๋ช ๋ง์ถ๊ณ , ๋ฐ์ดํฐ ํ์ ๋ณ๊ฒฝ
double_stations = double_positions['์งํ์ฒ ์ญ'].values.tolist()
single_stations = list(set(station_list) - set(double_stations))
single_positions = gangnam_sub[gangnam_sub['์งํ์ฒ ์ญ'].isin(single_stations)]
single_positions.drop('ํธ์ ๋ช
', axis = 1, inplace = True)
single_positions[['์๋', '๊ฒฝ๋']] = single_positions[['์๋', '๊ฒฝ๋']].astype(float)
display(single_positions.head(), len(single_positions))
โก ์ ์ฒด ์งํ์ฒ ์ญ ๋ถ์ด๊ธฐ(์์น1๊ฐ + ์์น2๊ฐ)
- ์์ฌ์ญ ๋ฐ์ดํฐ๋ง ์์
- ์ด๋ฅผ ์ ์ธํ๊ณ 27๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉ : (๊ฒฐ๊ณผ์ด๋ฏธ์ง๋ ์ผ๋ถ๋ง ๋ณด์)
gangnam_sub_positions = pd.concat([single_positions, double_positions], axis = 0, ignore_index = True)
gangnam_sub_positions
728x90