본문 바로가기
  • 紹睿: 자유롭고 더불어 사는 가치있는 삶
Project/따릉이 및 자전거 데이터 분석

[따릉이] 자전거 도로에 관하여 (3) - 자전거 도로 시각화

by 징여 2018. 9. 16.
반응형

자전거 도로 관련 정보는 공공데이터포털에 가면 받을 수 있다.

파일이 여러개가 존재했는데, 당시 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 [ ]:
 

자전거도로(2018)-2



test.html




노란색 동그라미를 누르면, 도로명 이름이 뜬다.

반응형

댓글