Newer
Older
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Combien de stations Vélo'V par commune ?"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"commune\n",
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
" 8\n",
"ALBIGNY-SUR-SAONE 1\n",
"BRON 4\n",
"CALUIRE-ET-CUIRE 4\n",
"COLLONGES-AU-MONT-D'OR 1\n",
"COUZON-AU-MONT-D'OR 1\n",
"ECULLY 1\n",
"FONTAINES-SUR-SAONE 2\n",
"LA MULATIERE 1\n",
"Lyon 1 er 20\n",
"Lyon 2 ème 33\n",
"Lyon 3 ème 56\n",
"Lyon 4 ème 20\n",
"Lyon 5 ème 25\n",
"Lyon 6 ème 32\n",
"Lyon 7 ème 45\n",
"Lyon 8 ème 38\n",
"Lyon 9 ème 26\n",
"NEUVILLE-SUR-SAONE 2\n",
"OULLINS 3\n",
"PIERRE-BENITE 1\n",
"RILLIEUX-LA-PAPE 2\n",
"SAINT-CYR-AU-MONT-D'OR 1\n",
"SAINT-DIDIER-AU-MONT-D'OR 1\n",
"SAINT-FONS 3\n",
"SAINT-GENIS-LAVAL 1\n",
"SAINT-PRIEST 2\n",
"SAINTE-FOY-LES-LYON 1\n",
"TASSIN-LA-DEMI-LUNE 1\n",
"VAULX-EN-VELIN 4\n",
"VENISSIEUX 4\n",
"VILLEURBANNE 76\n",
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.groupby(['commune'])['number'].count()"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>address</th>\n",
" <th>address2</th>\n",
" <th>commune</th>\n",
" <th>nmarrond</th>\n",
" <th>bonus</th>\n",
" <th>pole</th>\n",
" <th>lat</th>\n",
" <th>lng</th>\n",
" <th>bike_stands</th>\n",
" <th>status</th>\n",
" <th>available_bike_stands</th>\n",
" <th>available_bikes</th>\n",
" <th>availabilitycode</th>\n",
" <th>availability</th>\n",
" <th>banking</th>\n",
" <th>gid</th>\n",
" <th>last_update</th>\n",
" <th>last_update_fme</th>\n",
" <th>code_insee</th>\n",
" <th>langue</th>\n",
" <th>etat</th>\n",
" <th>description</th>\n",
" <th>startdate</th>\n",
" <th>enddate</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>12002</td>\n",
" <td>Vaulx - Poudrette / La Soie</td>\n",
" <td>Face 2 rue de la Poudrette</td>\n",
" <td>VAULX-EN-VELIN</td>\n",
" <td>70</td>\n",
" <td>Centre commercial Carré de Soie</td>\n",
" <td>45.7644003130587800</td>\n",
" <td>4.9192757859473670</td>\n",
" <td>20</td>\n",
" <td>OPEN</td>\n",
" <td>14</td>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" <td>Vert</td>\n",
" <td>false</td>\n",
" <td>1004</td>\n",
" <td>2020-03-09 23:24:24</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69256</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>849159.657927</td>\n",
" <td>6.520123e+06</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>162</th>\n",
" <td>Vaulx - La Soie</td>\n",
" <td>Rue de la Poudrette</td>\n",
" <td></td>\n",
" <td>VAULX-EN-VELIN</td>\n",
" <td>1</td>\n",
" <td></td>\n",
" <td>45.7608131946829250</td>\n",
" <td>4.9206039456886055</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Orange</td>\n",
" <td>true</td>\n",
" <td>986</td>\n",
" <td>2020-03-09 23:30:48</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69256</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>849272.545855</td>\n",
" <td>6.519728e+06</td>\n",
" <th>239</th>\n",
" <td>12003</td>\n",
" <td>Vaulx - Bibliothèque</td>\n",
" <td>Rue Joseph Blein</td>\n",
" <td>devant la bibliothèque</td>\n",
" <td>VAULX-EN-VELIN</td>\n",
" <td></td>\n",
" <td>45.7570697600648660</td>\n",
" <td>4.9273216112656590</td>\n",
" <td>15</td>\n",
" <td>OPEN</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Orange</td>\n",
" <td>false</td>\n",
" <td>1242</td>\n",
" <td>2020-03-09 23:23:25</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>849804.696246</td>\n",
" <td>6.519325e+06</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>268</th>\n",
" <td>12004</td>\n",
" <td>Vaulx - Hôtel de ville</td>\n",
" <td>Rue Maurice Audin</td>\n",
" <td></td>\n",
" <td>VAULX-EN-VELIN</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>45.7782973092579700</td>\n",
" <td>4.9207001064103110</td>\n",
" <td>30</td>\n",
" <td>CLOSED</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>Gris</td>\n",
" <td>false</td>\n",
" <td>1243</td>\n",
" <td>2020-03-09 23:29:14</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69256</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>849232.794316</td>\n",
" <td>6.521669e+06</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number name address \\\n",
"92 12002 Vaulx - Poudrette / La Soie Face 2 rue de la Poudrette \n",
"162 12001 Vaulx - La Soie Rue de la Poudrette \n",
"239 12003 Vaulx - Bibliothèque Rue Joseph Blein \n",
"268 12004 Vaulx - Hôtel de ville Rue Maurice Audin \n",
" address2 commune nmarrond bonus \\\n",
"92 VAULX-EN-VELIN 70 \n",
"162 VAULX-EN-VELIN 1 \n",
"239 devant la bibliothèque VAULX-EN-VELIN \n",
"268 VAULX-EN-VELIN \n",
" pole lat lng \\\n",
"92 Centre commercial Carré de Soie 45.7644003130587800 4.9192757859473670 \n",
"162 Pôle multimodal de la Soie 45.7608131946829250 4.9206039456886055 \n",
"239 45.7570697600648660 4.9273216112656590 \n",
"268 45.7782973092579700 4.9207001064103110 \n",
" bike_stands status available_bike_stands available_bikes \\\n",
"92 20 OPEN 14 6 \n",
"162 25 OPEN 25 0 \n",
"239 15 OPEN 14 0 \n",
"268 30 CLOSED 0 0 \n",
" availabilitycode availability banking gid last_update \\\n",
"92 1 Vert false 1004 2020-03-09 23:24:24 \n",
"162 3 Orange true 986 2020-03-09 23:30:48 \n",
"239 3 Orange false 1242 2020-03-09 23:23:25 \n",
"268 0 Gris false 1243 2020-03-09 23:29:14 \n",
" last_update_fme code_insee langue etat nature titre description \\\n",
"92 2020-03-09 23:31:00 69256 \n",
"162 2020-03-09 23:31:00 69256 \n",
"239 2020-03-09 23:31:00 69256 \n",
"268 2020-03-09 23:31:00 69256 \n",
" startdate enddate x y num_available_bikes \n",
"92 849159.657927 6.520123e+06 6 \n",
"162 849272.545855 6.519728e+06 0 \n",
"239 849804.696246 6.519325e+06 0 \n",
"268 849232.794316 6.521669e+06 0 "
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1[ df1['commune'] == 'VAULX-EN-VELIN' ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Et la station Vélo'V la plus proche de nous ?\n",
"\n",
"N.B. :\n",
"208b, rue Garibaldi $\\longrightarrow$ lng, lat = 4.8522681,45.7585214 ; X, Y = 843968.3, 6519346.2"
]
},
{
"cell_type": "code",
"outputs": [],
"source": [
"X0 = 843968.3\n",
"Y0 = 6519346.2"
]
},
{
"cell_type": "code",
"outputs": [],
"source": [
"import math\n",
"\n",
"def Euclidean_distance(a, b):\n",
" \"\"\"\n",
" a, b sont des tuples ~ (X, Y)\n",
" \"\"\"\n",
" \n",
" return math.sqrt( (a[0]-b[0])**2 + (a[1]-b[1])**2 )"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.4142135623730951"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Euclidean_distance( (0,0), (1,1) )"
]
},
{
"cell_type": "code",
"outputs": [],
"source": [
"df1['distance_from_here'] = df1.apply( lambda row: Euclidean_distance( (row.x, row.y), (X0, Y0)), axis=1 )"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 3388.205959\n",
"1 2276.157554\n",
"2 5283.594082\n",
"3 3816.028955\n",
"4 5645.438804\n",
"Name: distance_from_here, dtype: float64"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1['distance_from_here'].head()"
]
},
{
"cell_type": "code",
"outputs": [],
"source": [
"data['features'].sort(key=lambda x: x['properties']['available_bikes'], reverse=True)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>address</th>\n",
" <th>address2</th>\n",
" <th>commune</th>\n",
" <th>nmarrond</th>\n",
" <th>bonus</th>\n",
" <th>pole</th>\n",
" <th>lat</th>\n",
" <th>lng</th>\n",
" <th>bike_stands</th>\n",
" <th>status</th>\n",
" <th>available_bike_stands</th>\n",
" <th>available_bikes</th>\n",
" <th>availabilitycode</th>\n",
" <th>availability</th>\n",
" <th>banking</th>\n",
" <th>gid</th>\n",
" <th>last_update</th>\n",
" <th>last_update_fme</th>\n",
" <th>code_insee</th>\n",
" <th>langue</th>\n",
" <th>etat</th>\n",
" <th>description</th>\n",
" <th>startdate</th>\n",
" <th>enddate</th>\n",
" <th>distance_from_here</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>163</th>\n",
" <td>3058</td>\n",
" <td>Place du Lac</td>\n",
" <td>Place du Lac</td>\n",
" <td>face à la Poste</td>\n",
" <td>Lyon 3 ème</td>\n",
" <td>45.7588856223001300</td>\n",
" <td>4.8537678938544730</td>\n",
" <td>19</td>\n",
" <td>OPEN</td>\n",
" <td>18</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Vert</td>\n",
" <td>false</td>\n",
" <td>2020-03-09 23:22:38</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69383</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>844083.932775</td>\n",
" <td>6.519389e+06</td>\n",
" <td>1</td>\n",
" <td>123.429354</td>\n",
" <th>361</th>\n",
" <td>3037</td>\n",
" <td>Paul Bert / Garibaldi</td>\n",
" <td>209, Rue Paul Bert</td>\n",
" <td>Face place des Martyrs de la Résistance</td>\n",
" <td>maillage (piscine Garibaldi)</td>\n",
" <td>45.7571028581681740</td>\n",
" <td>4.8534807971166600</td>\n",
" <td>20</td>\n",
" <td>OPEN</td>\n",
" <td>11</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>Vert</td>\n",
" <td>true</td>\n",
" <td>859</td>\n",
" <td>2020-03-09 23:29:56</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69383</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>844066.268993</td>\n",
" <td>6.519191e+06</td>\n",
" <td>183.597414</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>3015</td>\n",
" <td>Servient / Garibaldi</td>\n",
" <td>Servient</td>\n",
" <td>Angle rue Garibaldi</td>\n",
" <td>tram, cité administrative</td>\n",
" <td>45.7607758409992000</td>\n",
" <td>4.8526939571425470</td>\n",
" <td>17</td>\n",
" <td>OPEN</td>\n",
" <td>17</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Orange</td>\n",
" <td>false</td>\n",
" <td>804</td>\n",
" <td>2020-03-09 23:22:41</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69383</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>843995.551801</td>\n",
" <th>235</th>\n",
" <td>3084</td>\n",
" <td>Desaix</td>\n",
" <td>128 rue Paul Bert</td>\n",
" <td></td>\n",
" <td>Lyon 3 ème</td>\n",
" <td>45.7572612599251600</td>\n",
" <td>4.8552008564228180</td>\n",
" <td>28</td>\n",
" <td>10</td>\n",
" <td>18</td>\n",
" <td>1</td>\n",
" <td>Vert</td>\n",
" <td>false</td>\n",
" <td>776</td>\n",
" <td>2020-03-09 23:30:31</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69383</td>\n",
" <td>FR</td>\n",
" <td>CLOSING</td>\n",
" <td>WORKS</td>\n",
" <td>Fermeture de la station 3038 - VIVIER MERLE /...</td>\n",
" <td>En raison de travaux sur le boulevard Marius V...</td>\n",
" <td>2019-10-01 00:00:00</td>\n",
" <td>2020-04-30 00:00:00</td>\n",
" <td>844199.526915</td>\n",
" <td>6.519212e+06</td>\n",
" <td>267.524302</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>3004</td>\n",
" <td>Bourse du travail</td>\n",
" <td>Rue de la Part-Dieu</td>\n",
" <td>face Place Voltaire</td>\n",
" <td>métro B, coeur quartier</td>\n",
" <td>45.7596382324954700</td>\n",
" <td>4.8480846921356076</td>\n",
" <td>20</td>\n",
" <td>OPEN</td>\n",
" <td>14</td>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" <td>Vert</td>\n",
" <td>true</td>\n",
" <td>855</td>\n",
" <td>2020-03-09 23:30:47</td>\n",
" <td>2020-03-09 23:31:00</td>\n",
" <td>69383</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>843640.331316</td>\n",
" <td>6.519463e+06</td>\n",
" <td>348.003165</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number name address \\\n",
"163 3058 Place du Lac Place du Lac \n",
"361 3037 Paul Bert / Garibaldi 209, Rue Paul Bert \n",
"8 3015 Servient / Garibaldi Servient \n",
"235 3084 Desaix 128 rue Paul Bert \n",
"98 3004 Bourse du travail Rue de la Part-Dieu \n",
"\n",
" address2 commune nmarrond bonus \\\n",
"163 face à la Poste Lyon 3 ème 58 \n",
"361 Face place des Martyrs de la Résistance Lyon 3 ème 37 \n",
"8 Angle rue Garibaldi Lyon 3 ème 15 \n",
"235 Lyon 3 ème 84 \n",
"98 face Place Voltaire Lyon 3 ème 4 \n",
"\n",
" pole lat lng \\\n",
"163 45.7588856223001300 4.8537678938544730 \n",
"361 maillage (piscine Garibaldi) 45.7571028581681740 4.8534807971166600 \n",
"8 tram, cité administrative 45.7607758409992000 4.8526939571425470 \n",
"235 45.7572612599251600 4.8552008564228180 \n",
"98 métro B, coeur quartier 45.7596382324954700 4.8480846921356076 \n",
" bike_stands status available_bike_stands available_bikes availabilitycode \\\n",
"163 19 OPEN 18 1 1 \n",
"361 20 OPEN 11 9 1 \n",
"8 17 OPEN 17 0 3 \n",
"235 28 OPEN 10 18 1 \n",
"98 20 OPEN 14 6 1 \n",
" availability banking gid last_update last_update_fme \\\n",
"163 Vert false 1045 2020-03-09 23:22:38 2020-03-09 23:31:00 \n",
"361 Vert true 859 2020-03-09 23:29:56 2020-03-09 23:31:00 \n",
"8 Orange false 804 2020-03-09 23:22:41 2020-03-09 23:31:00 \n",
"235 Vert false 776 2020-03-09 23:30:31 2020-03-09 23:31:00 \n",
"98 Vert true 855 2020-03-09 23:30:47 2020-03-09 23:31:00 \n",
" code_insee langue etat nature \\\n",
"163 69383 \n",
"361 69383 \n",
"8 69383 \n",
"235 69383 FR CLOSING WORKS \n",
"98 69383 \n",
" titre \\\n",
"163 \n",
"361 \n",
"8 \n",
"235 Fermeture de la station 3038 - VIVIER MERLE /... \n",
"98 \n",
" description startdate \\\n",
"163 \n",
"361 \n",
"8 \n",
"235 En raison de travaux sur le boulevard Marius V... 2019-10-01 00:00:00 \n",
"98 \n",
" enddate x y num_available_bikes \\\n",
"163 844083.932775 6.519389e+06 1 \n",
"361 844066.268993 6.519191e+06 9 \n",
"8 843995.551801 6.519597e+06 0 \n",
"235 2020-04-30 00:00:00 844199.526915 6.519212e+06 18 \n",
"98 843640.331316 6.519463e+06 6 \n",
"\n",
" distance_from_here \n",
"163 123.429354 \n",
"361 183.597414 \n",
"8 252.540732 \n",
"235 267.524302 \n",
"98 348.003165 "
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.sort_values('distance_from_here').head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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",
}
},
"nbformat": 4,
"nbformat_minor": 2
}