{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Paris WiFi Services" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datasetidrecordidrecord_timestampfields.cpfields.nom_sitefields.arc_adressefields.geo_point_2dfields.nombre_de_borne_wififields.idpwfields.geo_shape.typefields.geo_shape.coordinatesfields.etat2geometry.typegeometry.coordinates
0sites-disposant-du-service-paris-wi-fi31c3bfd9ad944ec1bea07cbeb28dc6bb0653e5302019-10-08T07:01:10.494000+00:0075010MEDIATHEQUE FRANCOISE SAGAN8 RUE LEON SCHWARTZENBERG[48.8754298708, 2.35366677297]11PW0147Point[2.353666772968424, 48.87542987081135]OpérationnelPoint[2.35366677297, 48.8754298708]
1sites-disposant-du-service-paris-wi-fi322b5836dd2af4413728e67dc4432cf83dde06b12019-10-08T07:01:10.494000+00:0075020PARC DE BELLEVILLE (PARIS NATURE MAISON DE L'AIR)27 RUE PIAT[48.8716051488, 2.38492475051]1PW0168Point[2.384924750509342, 48.87160514880642]OpérationnelPoint[2.38492475051, 48.8716051488]
2sites-disposant-du-service-paris-wi-fiec66708cf6e56caced0ae6485f68c0a44167636d2019-10-08T07:01:10.494000+00:0075013JARDIN BRASSAI59 BOULEVARD AUGUSTE BLANQUI[48.8292152156, 2.34951229427]1NaNPoint[2.349512294267843, 48.82921521555871]En étudePoint[2.34951229427, 48.8292152156]
3sites-disposant-du-service-paris-wi-fi6f37d419ab91b1d9b2972eafe2f5585c4d51f3582019-10-08T07:01:10.494000+00:0075007BERGES RIVE GAUCHE - JARDIN FLOTTANTPORT DU GROS CAILLOU[48.8629641751, 2.30452468194]3PW0189Point[2.30452468193794, 48.86296417505911]OpérationnelPoint[2.30452468194, 48.8629641751]
4sites-disposant-du-service-paris-wi-fi76280ce4b86872e0c0696c047c1d140b66c6868f2019-10-08T07:01:10.494000+00:0075016BIBLIOTHEQUE GERMAINE TILLION6 RUE DU COMMANDANT SCHLOESING[48.8618363826, 2.28427079122]2PW0113Point[2.284270791218422, 48.86183638257241]OpérationnelPoint[2.28427079122, 48.8618363826]
\n", "
" ], "text/plain": [ " datasetid \\\n", "0 sites-disposant-du-service-paris-wi-fi \n", "1 sites-disposant-du-service-paris-wi-fi \n", "2 sites-disposant-du-service-paris-wi-fi \n", "3 sites-disposant-du-service-paris-wi-fi \n", "4 sites-disposant-du-service-paris-wi-fi \n", "\n", " recordid record_timestamp \\\n", "0 31c3bfd9ad944ec1bea07cbeb28dc6bb0653e530 2019-10-08T07:01:10.494000+00:00 \n", "1 322b5836dd2af4413728e67dc4432cf83dde06b1 2019-10-08T07:01:10.494000+00:00 \n", "2 ec66708cf6e56caced0ae6485f68c0a44167636d 2019-10-08T07:01:10.494000+00:00 \n", "3 6f37d419ab91b1d9b2972eafe2f5585c4d51f358 2019-10-08T07:01:10.494000+00:00 \n", "4 76280ce4b86872e0c0696c047c1d140b66c6868f 2019-10-08T07:01:10.494000+00:00 \n", "\n", " fields.cp fields.nom_site \\\n", "0 75010 MEDIATHEQUE FRANCOISE SAGAN \n", "1 75020 PARC DE BELLEVILLE (PARIS NATURE MAISON DE L'AIR) \n", "2 75013 JARDIN BRASSAI \n", "3 75007 BERGES RIVE GAUCHE - JARDIN FLOTTANT \n", "4 75016 BIBLIOTHEQUE GERMAINE TILLION \n", "\n", " fields.arc_adresse fields.geo_point_2d \\\n", "0 8 RUE LEON SCHWARTZENBERG [48.8754298708, 2.35366677297] \n", "1 27 RUE PIAT [48.8716051488, 2.38492475051] \n", "2 59 BOULEVARD AUGUSTE BLANQUI [48.8292152156, 2.34951229427] \n", "3 PORT DU GROS CAILLOU [48.8629641751, 2.30452468194] \n", "4 6 RUE DU COMMANDANT SCHLOESING [48.8618363826, 2.28427079122] \n", "\n", " fields.nombre_de_borne_wifi fields.idpw fields.geo_shape.type \\\n", "0 11 PW0147 Point \n", "1 1 PW0168 Point \n", "2 1 NaN Point \n", "3 3 PW0189 Point \n", "4 2 PW0113 Point \n", "\n", " fields.geo_shape.coordinates fields.etat2 geometry.type \\\n", "0 [2.353666772968424, 48.87542987081135] Opérationnel Point \n", "1 [2.384924750509342, 48.87160514880642] Opérationnel Point \n", "2 [2.349512294267843, 48.82921521555871] En étude Point \n", "3 [2.30452468193794, 48.86296417505911] Opérationnel Point \n", "4 [2.284270791218422, 48.86183638257241] Opérationnel Point \n", "\n", " geometry.coordinates \n", "0 [2.35366677297, 48.8754298708] \n", "1 [2.38492475051, 48.8716051488] \n", "2 [2.34951229427, 48.8292152156] \n", "3 [2.30452468194, 48.8629641751] \n", "4 [2.28427079122, 48.8618363826] " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load local JSON file\n", "\n", "import pandas\n", "from pandas.io.json import json_normalize\n", "import json\n", "\n", "local_file_path = '../files/paris_wifi_services.json'\n", "with open(local_file_path, 'r') as json_file:\n", " data_json = json.load(json_file)\n", "\n", "df = pandas.DataFrame(json_normalize(data_json['records']))\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometry_coordinateslonlat
0[2.35366677297, 48.8754298708]2.35366748.875430
1[2.38492475051, 48.8716051488]2.38492548.871605
2[2.34951229427, 48.8292152156]2.34951248.829215
3[2.30452468194, 48.8629641751]2.30452548.862964
4[2.28427079122, 48.8618363826]2.28427148.861836
............
247[2.32004369744, 48.8568664767]2.32004448.856866
248[2.32204651708, 48.8385647684]2.32204748.838565
249[2.41209815834, 48.8492339972]2.41209848.849234
250[2.36872006696, 48.8817841102]2.36872048.881784
251[2.30722648326, 48.8595702097]2.30722648.859570
\n", "

252 rows × 3 columns

\n", "
" ], "text/plain": [ " geometry_coordinates lon lat\n", "0 [2.35366677297, 48.8754298708] 2.353667 48.875430\n", "1 [2.38492475051, 48.8716051488] 2.384925 48.871605\n", "2 [2.34951229427, 48.8292152156] 2.349512 48.829215\n", "3 [2.30452468194, 48.8629641751] 2.304525 48.862964\n", "4 [2.28427079122, 48.8618363826] 2.284271 48.861836\n", ".. ... ... ...\n", "247 [2.32004369744, 48.8568664767] 2.320044 48.856866\n", "248 [2.32204651708, 48.8385647684] 2.322047 48.838565\n", "249 [2.41209815834, 48.8492339972] 2.412098 48.849234\n", "250 [2.36872006696, 48.8817841102] 2.368720 48.881784\n", "251 [2.30722648326, 48.8595702097] 2.307226 48.859570\n", "\n", "[252 rows x 3 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Clean the dataset\n", "\n", "from cartoframes.data import Dataset\n", "\n", "df.columns = df.columns.str.replace(\".\", \"_\")\n", "df[['lon','lat']] = pandas.DataFrame(df['geometry_coordinates'].values.tolist(), index=df.index)\n", "df.loc[:, ['geometry_coordinates', 'lon', 'lat']]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " None\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " Static map image\n", " \n", " \n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
\n", " \n", "\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Source: Open Data Paris\n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "\n", " \n", "\n", "
\n", "

There is a \n", " from the CARTO VL library:

\n", "
\n", " :\n", "
\n", " \n", " \n", "
\n", "
\n", "\n", "
\n", " StackTrace\n", "
    \n", "
    \n", "
    \n", "\n", "\n", "\n", "\n", "\n", "\">\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from cartoframes.viz import Map, Layer, Legend\n", "\n", "ds = Dataset(df)\n", "\n", "Map(\n", " Layer(\n", " ds,\n", " 'color: ramp($fields_etat2, [green, yellow, red, silver])',\n", " legend=Legend(\n", " 'color-category',\n", " title='WiFi Services in Paris',\n", " footer='Source: Open Data Paris'\n", " )\n", " )\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }