DVF Demandes de Valeurs Foncières, programmation, Python, notebook, HTML
Ce notebook analyse les données DVF (Demandes de Valeurs Foncières) en se concentrant sur l'année 2022. Il inclut le chargement, le nettoyage et l'exploration des données avec des visualisations et comparaisons interannuelles.
[...] In # Évolution des transactions au fil de l'année 2022 df_2022["Date mutation"] = pd.to_datetime(df_2022["Dat e mutation"], df_2022["mois"] = df_2022["Date mutation"].dt.month monthly_counts = df_2022.groupby("mois").size() plt.figure(figsize=(10, monthly_counts.plot(marker='o', linestyle='-', color ='purple') plt.title("Nombre de transactions immobilières par moi s en 2022") plt.xlabel("Mois") plt.ylabel("Nombre de transactions") plt.xticks(range(1, "Fév", "Juin", "Juil", "Août", plt.grid() plt.show() Pics de vente en début d'été et en fin d'année. Activité basse en début d'année. In # Boxplot des prix au m² par type de bien plt.figure(figsize=(10, sns.boxplot(x=df_2022["Type local"], y=df_2022["prix_m palette="Set2", showfliers=False) plt.title("Boxplot des prix au m² par type de bien en 2022") plt.xlabel("Type de bien") plt.ylabel("Prix au m² plt.xticks(rotation=45) plt.show() /var/folders/rx/r35_mlgn4q758t104751brvm0000gp/T/ipyk ernel_8086/3851131409.py:3: FutureWarning: Passing `palette` without assigning `hue` is deprecat ed and will be removed in v0.14.0. [...]
[...] Analyses supplémentaires pour 2022 # Répartition des types de biens vendus type_counts = df_2022["Type local"].value_counts() plt.figure(figsize=(8, type_counts.plot(kind='bar', color='coral') plt.title("Répartition des transactions par type de bi en en 2022") plt.ylabel("Nombre de transactions") plt.xlabel("Type de bien") plt.xticks(rotation=45) plt.show() Une majorité de maison est vendue en France. In # Prix moyen au m² par type de bien type_prices = df_2022.groupby("Type local")["prix_m 2"].mean().sort_values() plt.figure(figsize=(8, type_prices.plot(kind='barh', color='green') plt.title("Prix moyen au m² par type de bien en 2022") plt.xlabel("Prix au m² plt.ylabel("Type de bien") plt.show() Les appartement ont une prix au m2 plus élevé sans doute car les appartement sont plus présents que les maisons dans les zones urbaines attractives. [...]
[...] In # Comparaison des distributions plt.figure(figsize=(10, sns.kdeplot(df_2022["prix_m2"], label="2022", shade=Tr ue) sns.kdeplot(df_2019["prix_m2"], label="2019", shade=Tr ue) plt.legend() plt.title("Comparaison des prix au m² entre 2019 et 20 plt.xlabel("Prix au m² plt.show() /var/folders/rx/r35_mlgn4q758t104751brvm0000gp/T/ipyk ernel_8086/1673878241.py:3: FutureWarning: `shade` is now deprecated in favor of `fill`; setting `fill=True`. This will become an error in seaborn v0.14.0; please update your code. sns.kdeplot(df_2022["prix_m2"], label="2022", shade =True) /var/folders/rx/r35_mlgn4q758t104751brvm0000gp/T/ipyk ernel_8086/1673878241.py:4: FutureWarning: `shade` is now deprecated in favor of `fill`; setting `fill=True`. [...]
[...] In # Charger les données géographiques des départements geojson_url = "https://france-geojson.gregoiredavid.f r/repo/departements.geojson" gdf = gpd.read_file(geojson_url) # Calculer la moyenne du prix au m² par département df_avg = df_2022.groupby("Code departement", as_index= False)["Surface reelle bati"].mean() # Assurer la correspondance des types pour la jointure df_avg["Code departement"] = df_avg["Code departemen t"].astype(str) gdf["code"] = gdf["code"].astype(str) # Fusionner les données géographiques avec les prix au m² gdf = gdf.merge(df_avg, left_on="code", right_on="Code departement", how="left") # Créer la carte m = folium.Map(location=[46.6031, 1.8883], zoom_start= # Centré sur la France # Ajouter les départements colorés en fonction du prix moyen au m² folium.Choropleth( geo_data=geojson_url, name="Surface du bati", data=df_avg, columns=["Code departement", "Surface reelle bat key_on="feature.properties.code", fill_color="YlOrRd", fill_opacity=0.7, line_opacity=0.2, legend_name="Surface reelle bati" ).add_to(m) # Ajouter les labels des prix sur la carte for row in gdf.dropna().iterrows(): folium.Marker( location=[row["geometry"].centroid.y, row["geo metry"].centroid.x], popup=f"{row['nom']} : {row['Surface reelle ba icon=folium.Icon(color="blue", icon="info-sig ).add_to(m) # Afficher la carte m.save("carte_surface.html") r visualisation m # Sauvegarde en HTML pou Out[181]: Make this Notebook Trusted to load map: File Trust Notebook 4. Comparaison avec 2019 Seulement le second semestre de 2019 ets disponible. On fait les mêmes prétraitements que pour 2022. [...]
[...] Assign the var iable to `hue` and set `legend=False` for the same ef fect. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture