# Load local JSON file
import pandas
from pandas.io.json import json_normalize
import json
local_file_path = '../files/paris_wifi_services.json'
with open(local_file_path, 'r') as json_file:
data_json = json.load(json_file)
df = pandas.DataFrame(json_normalize(data_json['records']))
df.head()
datasetid | recordid | record_timestamp | fields.cp | fields.nom_site | fields.arc_adresse | fields.geo_point_2d | fields.nombre_de_borne_wifi | fields.idpw | fields.geo_shape.type | fields.geo_shape.coordinates | fields.etat2 | geometry.type | geometry.coordinates | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | sites-disposant-du-service-paris-wi-fi | 31c3bfd9ad944ec1bea07cbeb28dc6bb0653e530 | 2019-10-08T07:01:10.494000+00:00 | 75010 | MEDIATHEQUE FRANCOISE SAGAN | 8 RUE LEON SCHWARTZENBERG | [48.8754298708, 2.35366677297] | 11 | PW0147 | Point | [2.353666772968424, 48.87542987081135] | Opérationnel | Point | [2.35366677297, 48.8754298708] |
1 | sites-disposant-du-service-paris-wi-fi | 322b5836dd2af4413728e67dc4432cf83dde06b1 | 2019-10-08T07:01:10.494000+00:00 | 75020 | PARC DE BELLEVILLE (PARIS NATURE MAISON DE L'AIR) | 27 RUE PIAT | [48.8716051488, 2.38492475051] | 1 | PW0168 | Point | [2.384924750509342, 48.87160514880642] | Opérationnel | Point | [2.38492475051, 48.8716051488] |
2 | sites-disposant-du-service-paris-wi-fi | ec66708cf6e56caced0ae6485f68c0a44167636d | 2019-10-08T07:01:10.494000+00:00 | 75013 | JARDIN BRASSAI | 59 BOULEVARD AUGUSTE BLANQUI | [48.8292152156, 2.34951229427] | 1 | NaN | Point | [2.349512294267843, 48.82921521555871] | En étude | Point | [2.34951229427, 48.8292152156] |
3 | sites-disposant-du-service-paris-wi-fi | 6f37d419ab91b1d9b2972eafe2f5585c4d51f358 | 2019-10-08T07:01:10.494000+00:00 | 75007 | BERGES RIVE GAUCHE - JARDIN FLOTTANT | PORT DU GROS CAILLOU | [48.8629641751, 2.30452468194] | 3 | PW0189 | Point | [2.30452468193794, 48.86296417505911] | Opérationnel | Point | [2.30452468194, 48.8629641751] |
4 | sites-disposant-du-service-paris-wi-fi | 76280ce4b86872e0c0696c047c1d140b66c6868f | 2019-10-08T07:01:10.494000+00:00 | 75016 | BIBLIOTHEQUE GERMAINE TILLION | 6 RUE DU COMMANDANT SCHLOESING | [48.8618363826, 2.28427079122] | 2 | PW0113 | Point | [2.284270791218422, 48.86183638257241] | Opérationnel | Point | [2.28427079122, 48.8618363826] |
# Clean the dataset
from cartoframes.data import Dataset
df.columns = df.columns.str.replace(".", "_")
df[['lon','lat']] = pandas.DataFrame(df['geometry_coordinates'].values.tolist(), index=df.index)
df.loc[:, ['geometry_coordinates', 'lon', 'lat']]
geometry_coordinates | lon | lat | |
---|---|---|---|
0 | [2.35366677297, 48.8754298708] | 2.353667 | 48.875430 |
1 | [2.38492475051, 48.8716051488] | 2.384925 | 48.871605 |
2 | [2.34951229427, 48.8292152156] | 2.349512 | 48.829215 |
3 | [2.30452468194, 48.8629641751] | 2.304525 | 48.862964 |
4 | [2.28427079122, 48.8618363826] | 2.284271 | 48.861836 |
... | ... | ... | ... |
247 | [2.32004369744, 48.8568664767] | 2.320044 | 48.856866 |
248 | [2.32204651708, 48.8385647684] | 2.322047 | 48.838565 |
249 | [2.41209815834, 48.8492339972] | 2.412098 | 48.849234 |
250 | [2.36872006696, 48.8817841102] | 2.368720 | 48.881784 |
251 | [2.30722648326, 48.8595702097] | 2.307226 | 48.859570 |
252 rows × 3 columns
from cartoframes.viz import Map, Layer, Legend
ds = Dataset(df)
Map(
Layer(
ds,
'color: ramp($fields_etat2, [green, yellow, red, silver])',
legend=Legend(
'color-category',
title='WiFi Services in Paris',
footer='Source: <a href="https://opendata.paris.fr" target="_blank">Open Data Paris</a>'
)
)
)