Project/따릉이 및 자전거 데이터 분석
[따릉이] 자전거 도로에 관하여 (3) - 자전거 도로 시각화
징여
2018. 9. 16. 16:50
반응형
자전거 도로 관련 정보는 공공데이터포털에 가면 받을 수 있다.
파일이 여러개가 존재했는데, 당시 csv파일밖에 못받는줄알고 이 csv파일로 열심히 도전했었다. (17년도 기준)
자전거 도로 시각화하기¶
In [1]:
import folium
import pandas as pd
import re
1. 자전거 도로 위도 경도 파일 불러오기¶
In [2]:
bike = pd.read_csv('./data/자전거도로/2018년/bicycle_road(18).csv', encoding='utf-8')
bike.head(3)
Out[2]:
NAME | ROAD_NAME | coords | coords_number | coords2 | |
---|---|---|---|---|---|
0 | 동대문구 | 천호대로 | [(206156.42150000017, 551272.0171000008), (206... | 2 | [(37.56095825909572, 127.06967941710447), (37.... |
1 | 동대문구 | 천호대로 | [(206020.642, 551297.2594000008), (205885.6416... | 2 | [(37.561186588203796, 127.06814284995941), (37... |
2 | 동대문구 | 천호대로 | [(205552.6403000001, 551381.5241999999), (2054... | 2 | [(37.56194874916615, 127.06284655236189), (37.... |
2. 자전거 도로 갯수 확인¶
In [3]:
road_name = list(set(bike['ROAD_NAME'].unique()))
len(road_name)
Out[3]:
503
2-1. 자전거 ROAD_NAME기준 몇개의 위도 경도를 가지고 있는지 확인¶
In [4]:
roads = []
for i in road_name[1:]:
roads.append((i, bike[bike['ROAD_NAME'] == i].shape[0]))
In [8]:
roads_df = pd.DataFrame(roads)
roads_df.columns = ['ROAD_NAME', 'cnt']
roads_df.sort_values('cnt', ascending=False, inplace=True)
roads_df.head(5)
Out[8]:
ROAD_NAME | cnt | |
---|---|---|
204 | 천호대로 | 353 |
243 | 중랑천(좌안) | 220 |
14 | 도봉로 | 190 |
233 | 언주로 | 168 |
110 | 중랑천(우안) | 150 |
2-2. 제일 많은 (TOP 1: 천호대로) 부터 차분히 확인해보기¶
In [9]:
ch_road = bike[bike['ROAD_NAME'] =='천호대로']
ch_road.shape[0]
Out[9]:
353
In [10]:
def reset_coords(road='천호대로'):
print(road)
df = bike[bike['ROAD_NAME'] ==road]
coords_numbers = list(set(df['coords_number'].unique()))
new_coords= {}
for idx, values in enumerate(df['coords2']):
# str -> float 형식으로 바꾸어주기
txt = values.replace(')','')
txt = txt.replace('(','')
txt = txt.replace(']','')
txt = txt.replace('[','')
txt = txt.replace("'",'')
coords = txt.split(',')
for n in range(len(coords)):
coords[n] = float(coords[n])
tmp = {}
for i in range(0, len(coords), 2):
tmp[i] = tuple(coords[i:i+2])
new_coords[idx] = tmp
return pd.DataFrame.from_dict(new_coords).T
2-2-1. 하나의 coords에 몇개의 위도경도값을 가지고 있는지 확인.....¶
In [11]:
coords_numbers = list(set(ch_road['coords_number'].unique()))
print(coords_numbers)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17]
In [15]:
counts = 0
for i in coords_numbers:
cnt = i*len(ch_road[ch_road['coords_number']==i].index)
counts += cnt
counts
Out[15]:
935
In [16]:
ch_road[ch_road['coords_number']==17]
Out[16]:
NAME | ROAD_NAME | coords | coords_number | coords2 | |
---|---|---|---|---|---|
8604 | 송파구 | 천호대로 | [(210663.1978000002, 548972.2015000004), (2106... | 17 | [(37.54019588130041, 127.12065438295427), (37.... |
In [17]:
new_coords= {}
for idx, values in enumerate(ch_road['coords2']):
# str -> float 형식으로 바꾸어주기
txt = values.replace(')','')
txt = txt.replace('(','')
txt = txt.replace(']','')
txt = txt.replace('[','')
txt = txt.replace("'",'')
coords = txt.split(',')
for n in range(len(coords)):
coords[n] = float(coords[n])
tmp = {}
for i in range(0, len(coords), 2):
tmp[i] = tuple(coords[i:i+2])
new_coords[idx] = tmp
In [28]:
coords3 = pd.DataFrame.from_dict(new_coords).T
coords3.drop(columns=[24, 26, 28, 30, 32], inplace=True)
In [29]:
coords3
Out[29]:
0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | (37.56095825909572, 127.06967941710447) | (37.56116515164998, 127.06828483534693) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | (37.561186588203796, 127.06814284995941) | (37.56139852304134, 127.0666150779977) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | (37.56194874916615, 127.06284655236189) | (37.56218237870233, 127.06124823160123) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | (37.56621785319459, 127.05390829219813) | (37.566861263103085, 127.05303951761987) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | (37.56693529027162, 127.05294617304577) | (37.56752464159238, 127.05216062722405) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 | (37.567604145612364, 127.05205819999627) | (37.568256720123344, 127.0511750706161) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | (37.56511877338124, 127.05464685422237) | (37.56481496359042, 127.0550739027163) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
7 | (37.560753260798585, 127.06825408495403) | (37.56061707564324, 127.06931570523275) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
8 | (37.56270670690497, 127.05790833113629) | (37.56260114105772, 127.058061822229) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
9 | (37.565588873479655, 127.05475960078309) | (37.56613152554248, 127.05402771735928) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
10 | (37.56151146643013, 127.062972211516) | (37.561443647053096, 127.06349626256478) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
11 | (37.567279178054676, 127.05177346311677) | (37.566623960792526, 127.05265873808119) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
12 | (37.56797069201535, 127.05082639887631) | (37.567279178054676, 127.05177346311677) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13 | (37.560999100663054, 127.06650439282085) | (37.560788181659575, 127.06803704504007) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
14 | (37.56051970142815, 127.06990845714991) | (37.56043532522027, 127.07034477889255) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
15 | (37.564418139519056, 127.05559135243335) | (37.563962885095044, 127.05619837595722) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
16 | (37.56481496359042, 127.0550739027163) | (37.564492603289956, 127.05549933804303) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
17 | (37.56176164063275, 127.06115558539177) | (37.56154404463947, 127.0627658290281) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
18 | (37.56178482693855, 127.06100917959016) | (37.56177323380833, 127.06108238250235) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
19 | (37.564492603289956, 127.05549933804303) | (37.56445537141383, 127.05554534469516) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
20 | (37.56204683265147, 127.05934311625504) | (37.56202837592861, 127.05940902522721) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
21 | (37.560773709893006, 127.06811978898418) | (37.560753260798585, 127.06825408495403) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
22 | (37.56260114105772, 127.058061822229) | (37.562561444982805, 127.058120367592) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
23 | (37.56177323380833, 127.06108238250235) | (37.56176164063275, 127.06115558539177) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
24 | (37.56153342736418, 127.06284022859104) | (37.56151146643013, 127.062972211516) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
25 | (37.56101269761328, 127.06642434918635) | (37.560999100663054, 127.06650439282085) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
26 | (37.56116515164998, 127.06828483534693) | (37.561175801661456, 127.06821429532913) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
27 | (37.561920952831365, 127.06302007497435) | (37.56193529670462, 127.0629305320172) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
28 | (37.56242699731708, 127.05953994692219) | (37.56243956309471, 127.05947642678831) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
29 | (37.563966630911615, 127.05699824549208) | (37.56410988722719, 127.05678380180245) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
323 | (37.549841151901, 127.09080447136974) | (37.54979769409817, 127.09086180564051) | (37.54971239545177, 127.090983812412) | (37.54959068549926, 127.09117240582485) | (37.549497738950734, 127.09132341904191) | (37.549403667425935, 127.09150277474215) | (37.54933092289595, 127.09165229211499) | (37.54926111803424, 127.09181004887606) | NaN | NaN | NaN | NaN |
324 | (37.545648169422584, 127.10194155858028) | (37.54541711580537, 127.10257067030201) | (37.5453181766876, 127.10283843969727) | (37.54524423572868, 127.10304054447698) | (37.54501823992525, 127.10375164923771) | (37.544965703842344, 127.1039245127176) | NaN | NaN | NaN | NaN | NaN | NaN |
325 | (37.54768630968914, 127.09632178896729) | (37.54757242312666, 127.0966541106475) | (37.54722692377437, 127.0976176515944) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
326 | (37.554043766788155, 127.08693994700239) | (37.55391316211802, 127.08728631584425) | (37.55387168380876, 127.08738374273177) | (37.553838579410986, 127.08745546574129) | (37.55379572754516, 127.08754721644576) | (37.55372954945806, 127.08768052884018) | (37.55366675516528, 127.08780442011899) | (37.55359526278131, 127.08794488497927) | (37.55355008825811, 127.08802388485292) | (37.553502292053686, 127.08810010094865) | NaN | NaN |
327 | (37.546660619550394, 127.09923420872109) | (37.54639564194284, 127.10005127283384) | (37.546341801486605, 127.10021003727348) | (37.54629838707043, 127.10031802948824) | (37.546230747918884, 127.10047201892047) | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
328 | (37.55344716485974, 127.0881756768195) | (37.55329622844402, 127.08837864945357) | (37.55314236270181, 127.08855136637273) | (37.55306655235743, 127.08863355106448) | (37.552986366980896, 127.08870817972794) | (37.55290459140446, 127.08878505954956) | (37.55281841823674, 127.08885923941979) | (37.552711442515815, 127.08894334536689) | (37.55261215003141, 127.08902202130932) | (37.5525009266848, 127.08910878346714) | (37.55237245350947, 127.0891957568056) | (37.55233365073547, 127.0892201391393) |
329 | (37.546230747918884, 127.10047201892047) | (37.54617179505777, 127.10060490309527) | (37.54610741006114, 127.10075558082342) | (37.545989791499636, 127.10099755452073) | (37.54596658122525, 127.1010476922403) | (37.54594502539457, 127.10110387371918) | (37.54591932888166, 127.10117964529837) | (37.54571695473963, 127.10176355418858) | NaN | NaN | NaN | NaN |
330 | (37.54722692377437, 127.0976176515944) | (37.5471056774944, 127.09795577948697) | (37.546790694948584, 127.09877747070983) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
331 | (37.548115264243066, 127.09506996093417) | (37.54808139530208, 127.09516889635218) | (37.54768630968914, 127.09632178896729) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
332 | (37.54919833975929, 127.09194130760233) | (37.54906288593553, 127.09227568018457) | (37.5490219531551, 127.09249387592155) | (37.548894599731604, 127.09285092452394) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
333 | (37.545422008720884, 127.10438381236212) | (37.545393394892905, 127.10412245417936) | (37.54545347423965, 127.10384637515212) | (37.545597120407194, 127.1034090858637) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
334 | (37.550336992976206, 127.090975161923) | (37.55061690692861, 127.09071522143583) | (37.550915103728535, 127.09049241404486) | (37.55104675425027, 127.09040969899915) | (37.55143356868232, 127.09022624003508) | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
335 | (37.55143356868232, 127.09022624003508) | (37.55204040015307, 127.08994706820972) | (37.552398092810535, 127.08976814264953) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
336 | (37.55247169888371, 127.08972078150923) | (37.55276765896702, 127.0895232983099) | (37.553027027433615, 127.08933408897973) | (37.553375879196686, 127.08899661088293) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
337 | (37.54760521951308, 127.09744227729432) | (37.54764108125473, 127.09724202470262) | (37.54766613685635, 127.09713397325835) | (37.547784905656805, 127.0967618569631) | (37.548048567664985, 127.09600004631059) | (37.548331620376274, 127.09518480602006) | (37.54865084068785, 127.09428390112821) | (37.54874639227757, 127.09399255950953) | (37.548902650234524, 127.09380836271217) | (37.54918918880231, 127.09302433672268) | NaN | NaN |
338 | (37.545952519302695, 127.10233979465242) | (37.54606411549457, 127.10202918509547) | (37.54628981760636, 127.10132271678577) | (37.546365776717415, 127.10100251460904) | (37.54649031366898, 127.10050408144967) | (37.54655049411169, 127.10034512171781) | (37.546787491184524, 127.09965227307444) | (37.547058450276424, 127.09884725598793) | (37.547523265212085, 127.09750604000241) | NaN | NaN | NaN |
339 | (37.549230313587664, 127.09291038310378) | (37.54946521404821, 127.09233108007598) | (37.54951531699204, 127.09216470767288) | (37.549623513785455, 127.0919827603231) | (37.549825078714655, 127.09164103412151) | (37.549958638403886, 127.09143154246351) | (37.550100452755835, 127.0912394241922) | (37.55023762324578, 127.0910879372554) | NaN | NaN | NaN | NaN |
340 | (37.553459631525286, 127.088912775447) | (37.55357216704612, 127.08878464057965) | (37.55364824465167, 127.0887545901053) | (37.55378813410961, 127.08873225877724) | (37.5539471315206, 127.08870805666379) | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
341 | (37.55838786146926, 127.07697333930989) | (37.55861983886466, 127.07638308349345) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
342 | (37.55788401400524, 127.0782834516225) | (37.55828543248869, 127.07724104842063) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
343 | (37.55746675466349, 127.07952306272611) | (37.557449605948854, 127.07939459046636) | (37.55784821248335, 127.07838184077715) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
344 | (37.55647838904276, 127.08185481848334) | (37.55687069789012, 127.08083702364341) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
345 | (37.55595732309272, 127.0831818282518) | (37.55641519546338, 127.08200981240678) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
346 | (37.55545229848545, 127.0844678179756) | (37.55590937417446, 127.0833129459146) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
347 | (37.55495472085432, 127.08577633153234) | (37.5554136877561, 127.08460413121684) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
348 | (37.5539229730675, 127.0884726945539) | (37.55386266371433, 127.08834537952607) | (37.55405724315008, 127.08795557365762) | (37.55418515301313, 127.08770397869822) | (37.55440354173941, 127.08719244483258) | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
349 | (37.55885967584366, 127.07575142336182) | (37.55928551506633, 127.07464205945011) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
350 | (37.558649179513885, 127.07629438741375) | (37.55881999422436, 127.0758509292813) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
351 | (37.556943050554636, 127.08068306982227) | (37.55728863329454, 127.07980029978225) | (37.55738051299885, 127.07975418903152) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
352 | (37.55444987612361, 127.08707077573683) | (37.554904646029776, 127.08590534172134) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
353 rows × 12 columns
In [30]:
ch_road_result = pd.concat([ch_road, coords3], axis=1, join_axes=[ch_road.index])
In [31]:
ch_road_result.head(3)
Out[31]:
NAME | ROAD_NAME | coords | coords_number | coords2 | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 동대문구 | 천호대로 | [(206156.42150000017, 551272.0171000008), (206... | 2 | [(37.56095825909572, 127.06967941710447), (37.... | (37.56095825909572, 127.06967941710447) | (37.56116515164998, 127.06828483534693) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 동대문구 | 천호대로 | [(206020.642, 551297.2594000008), (205885.6416... | 2 | [(37.561186588203796, 127.06814284995941), (37... | (37.561186588203796, 127.06814284995941) | (37.56139852304134, 127.0666150779977) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 동대문구 | 천호대로 | [(205552.6403000001, 551381.5241999999), (2054... | 2 | [(37.56194874916615, 127.06284655236189), (37.... | (37.56194874916615, 127.06284655236189) | (37.56218237870233, 127.06124823160123) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
In [32]:
ch_road_result.drop(columns=['coords','coords2'], inplace=True)
ch_road_result
Out[32]:
NAME | ROAD_NAME | coords_number | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 동대문구 | 천호대로 | 2 | (37.56095825909572, 127.06967941710447) | (37.56116515164998, 127.06828483534693) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 동대문구 | 천호대로 | 2 | (37.561186588203796, 127.06814284995941) | (37.56139852304134, 127.0666150779977) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 동대문구 | 천호대로 | 2 | (37.56194874916615, 127.06284655236189) | (37.56218237870233, 127.06124823160123) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | 동대문구 | 천호대로 | 2 | (37.56621785319459, 127.05390829219813) | (37.566861263103085, 127.05303951761987) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | 동대문구 | 천호대로 | 2 | (37.56693529027162, 127.05294617304577) | (37.56752464159238, 127.05216062722405) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 | 동대문구 | 천호대로 | 2 | (37.567604145612364, 127.05205819999627) | (37.568256720123344, 127.0511750706161) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | 성동구 | 천호대로 | 2 | (37.56511877338124, 127.05464685422237) | (37.56481496359042, 127.0550739027163) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
7 | 성동구 | 천호대로 | 2 | (37.560753260798585, 127.06825408495403) | (37.56061707564324, 127.06931570523275) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
11 | 성동구 | 천호대로 | 2 | (37.567279178054676, 127.05177346311677) | (37.566623960792526, 127.05265873808119) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
12 | 동대문구 | 천호대로 | 2 | (37.56797069201535, 127.05082639887631) | (37.567279178054676, 127.05177346311677) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
34 | 성동구 | 천호대로 | 2 | (37.56193529670462, 127.0629305320172) | (37.56194874916615, 127.06284655236189) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
71 | 성동구 | 천호대로 | 2 | (37.56898325290693, 127.04948928305394) | (37.5689382668827, 127.04954351271724) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
73 | 성동구 | 천호대로 | 2 | (37.5689382668827, 127.04954351271724) | (37.56889956395319, 127.04959016929531) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
80 | 성동구 | 천호대로 | 2 | (37.57210671949589, 127.0443071481059) | (37.57217071147052, 127.04415884710727) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
103 | 성동구 | 천호대로 | 2 | (37.56142420746288, 127.06644130026778) | (37.56158248230499, 127.06538675990271) | (37.56203696871124, 127.06511879608209) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
104 | 성동구 | 천호대로 | 2 | (37.57020337294387, 127.04863900718307) | (37.57042530968905, 127.04818865290329) | (37.570709781176, 127.04755029394019) | (37.570939081186914, 127.04700726041263) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
105 | 성동구 | 천호대로 | 2 | (37.562157566867214, 127.06485402225375) | (37.562042202981864, 127.06476100101486) | (37.56177376089055, 127.06402105609405) | (37.561920952831365, 127.06302007497435) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
117 | 성동구 | 천호대로 | 2 | (37.53805388864516, 127.12608297413487) | (37.538069931751856, 127.12602988654209) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
119 | 성동구 | 천호대로 | 2 | (37.536343987517434, 127.13162282254625) | (37.536372704586746, 127.13153917441407) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
120 | 성동구 | 천호대로 | 2 | (37.533539770202744, 127.13982351349829) | (37.53353137102252, 127.13988366574712) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
121 | 성동구 | 천호대로 | 2 | (37.53663678678585, 127.13067484052338) | (37.536653855838615, 127.13062307145353) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
122 | 성동구 | 천호대로 | 2 | (37.538069931751856, 127.12602988654209) | (37.53809991113085, 127.12593068213043) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
123 | 성동구 | 천호대로 | 2 | (37.53444924152867, 127.14401765274141) | (37.53447787928388, 127.14408678413467) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
124 | 성동구 | 천호대로 | 2 | (37.53480093460419, 127.1448674952701) | (37.5348770618857, 127.1450385415169) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
125 | 성동구 | 천호대로 | 2 | (37.5348770618857, 127.1450385415169) | (37.53492263394895, 127.14514749863294) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
126 | 성동구 | 천호대로 | 2 | (37.535507740051344, 127.14548186857179) | (37.535639400368126, 127.14581799595048) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
128 | 동대문구 | 천호대로 | 2 | (37.537624007845835, 127.15153491555724) | (37.53767718794796, 127.15164830534252) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
130 | 동대문구 | 천호대로 | 2 | (37.535234363889685, 127.14480903333273) | (37.53517638267591, 127.1446701438702) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
131 | 동대문구 | 천호대로 | 2 | (37.53483277678383, 127.1438614791547) | (37.5347832195209, 127.14373976532544) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
132 | 동대문구 | 천호대로 | 2 | (37.53517638267591, 127.1446701438702) | (37.53514494441408, 127.14459483427375) | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
13132 | 광진구 | 천호대로 | 8 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13144 | 광진구 | 천호대로 | 6 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13145 | 광진구 | 천호대로 | 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13146 | 광진구 | 천호대로 | 10 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13149 | 광진구 | 천호대로 | 5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13154 | 광진구 | 천호대로 | 12 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13159 | 광진구 | 천호대로 | 8 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13160 | 광진구 | 천호대로 | 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13161 | 광진구 | 천호대로 | 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13213 | 광진구 | 천호대로 | 4 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13223 | 광진구 | 천호대로 | 4 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13224 | 광진구 | 천호대로 | 5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13225 | 광진구 | 천호대로 | 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13226 | 광진구 | 천호대로 | 4 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13244 | 광진구 | 천호대로 | 10 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13278 | 광진구 | 천호대로 | 9 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13279 | 광진구 | 천호대로 | 8 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13280 | 광진구 | 천호대로 | 5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13323 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13324 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13325 | 광진구 | 천호대로 | 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13326 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13327 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13328 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13329 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13330 | 광진구 | 천호대로 | 5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13331 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13339 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13340 | 광진구 | 천호대로 | 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13341 | 광진구 | 천호대로 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
353 rows × 15 columns
In [33]:
ch_road_gu = list(ch_road_result['NAME'].unique())
print(ch_road_gu)
ch_road_number = list(ch_road_result['coords_number'].unique())
print(ch_road_number)
['동대문구', '성동구', '송파구', '강동구', '광진구'] [2, 6, 3, 12, 7, 8, 14, 5, 4, 17, 11, 10, 9]
In [35]:
def draw_line(df, row_s, row_e, color):
tmp_1 = df.iloc[row_s:row_e,:].values
list_tmp = []
for i in range(len(tmp_1)):
tmps = list(tmp_1[i])
if i == 1:
list_tmp = tmps
else:
list_tmp += tmps
list_tmp = [x for x in list_tmp if str(x) != 'nan']
folium.PolyLine(list_tmp, color=color, weight=2.5, opacity=1).add_to(map_osm)
In [36]:
map_osm = folium.Map((37.57501712454989, 126.91778510840645), tiles='Stamen Toner', zoom_start=12)
for name in road_name[1:]:
road = reset_coords(name)
color = 'red'
if len(road.index) == 1:
draw_line(road, 0, 1, color)
else:
for i in range(len(road.index)-1):
start = i
end = i+1
draw_line(road, start, end, color)
folium.Circle(
location=road.loc[0][0],
radius=15,
popup=name,
color = '#FFBC42',
fill=True,
fill_opacity = 0.3,
fill_color='#FFFFF3').add_to(map_osm)
map_osm.save('test.html')
광진교 상도로
... 동일로213길 성수이로 종암로 방학87 무학로
In [ ]:
노란색 동그라미를 누르면, 도로명 이름이 뜬다.
반응형