{
"cells": [
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from fuzzywuzzy import process\n",
"from typing import List\n",
"\n",
"\n",
"def get_popular_agriculture(\n",
" df: pd.DataFrame,\n",
" region: str,\n",
" surface_parc: str = None,\n",
" groups_agri: List[str] = None,\n",
"): # surface en hectare\n",
" unique_regions = df[\"REGION\"].unique().tolist()\n",
" region, _ = process.extractOne(region, unique_regions)\n",
" df = df[df[\"REGION\"] == region]\n",
" if groups_agri != None:\n",
" unique_agri_group = df[\"LIBELLE_GROUPE_CULTURE\"].unique().tolist()\n",
" groups_agri_new = []\n",
" for group_culture in groups_agri:\n",
" groups_agri_new.append(process.extractOne(group_culture, unique_agri_group)[0])\n",
" df = df[df[\"LIBELLE_GROUPE_CULTURE\"].isin(groups_agri_new)]\n",
" if surface_parc != None:\n",
" popular_cultures = df[\"LIBELLE_CULTURE\"].value_counts().head(10).index\n",
" df = df[df[\"LIBELLE_CULTURE\"].isin(popular_cultures)]\n",
" df[\"proximity\"] = abs(df[\"SURF_PARC\"] - surface_parc)\n",
" sorted_df = df.sort_values(by=\"proximity\").drop(columns=\"proximity\")\n",
" return popular_cultures, sorted_df[[\"LIBELLE_CULTURE\",\"LIBELLE_GROUPE_CULTURE\",\"SURF_PARC\"]]\n",
" popular_cultures = df[\"LIBELLE_CULTURE\"].value_counts().head(10).index\n",
" df = df[df[\"LIBELLE_CULTURE\"].isin(popular_cultures)]\n",
" return popular_cultures, df[[\"LIBELLE_CULTURE\",\"LIBELLE_GROUPE_CULTURE\",\"SURF_PARC\"]]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\"./data_rpg/data_prepared_rpg.csv\")\n",
"\n",
"pop, sorted_df = get_popular_agriculture(\n",
" df,\n",
" \"Bretagne\",\n",
" 132.5\n",
" \n",
")"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" LIBELLE_CULTURE | \n",
" LIBELLE_GROUPE_CULTURE | \n",
" SURF_PARC | \n",
"
\n",
" \n",
" \n",
" \n",
" 26 | \n",
" Autre plante fourragère annuelle (ni légumineu... | \n",
" Fourrage | \n",
" 118.12 | \n",
"
\n",
" \n",
" 49 | \n",
" Aïl | \n",
" Légumes ou fleurs | \n",
" 49.67 | \n",
"
\n",
" \n",
" 61 | \n",
" Plantes médicinales et à parfum non pérennes (... | \n",
" Autres cultures industrielles | \n",
" 29.14 | \n",
"
\n",
" \n",
" 78 | \n",
" Plante aromatique pérenne non arbustive ou arb... | \n",
" Autres cultures industrielles | \n",
" 20.14 | \n",
"
\n",
" \n",
" 14 | \n",
" Autre culture pérenne et jachère dans les bana... | \n",
" Divers | \n",
" 5.31 | \n",
"
\n",
" \n",
" 37 | \n",
" Agrume | \n",
" Vergers | \n",
" 3.18 | \n",
"
\n",
" \n",
" 2 | \n",
" Plantes aromatiques herbacées non pérennes (< ... | \n",
" Autres cultures industrielles | \n",
" 277.71 | \n",
"
\n",
" \n",
" 117 | \n",
" Avoine de printemps | \n",
" Autres céréales | \n",
" 877.02 | \n",
"
\n",
" \n",
" 91 | \n",
" Artichaut | \n",
" Légumes ou fleurs | \n",
" 2953.38 | \n",
"
\n",
" \n",
" 104 | \n",
" Avoine d’hiver | \n",
" Autres céréales | \n",
" 5176.17 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" LIBELLE_CULTURE \\\n",
"26 Autre plante fourragère annuelle (ni légumineu... \n",
"49 Aïl \n",
"61 Plantes médicinales et à parfum non pérennes (... \n",
"78 Plante aromatique pérenne non arbustive ou arb... \n",
"14 Autre culture pérenne et jachère dans les bana... \n",
"37 Agrume \n",
"2 Plantes aromatiques herbacées non pérennes (< ... \n",
"117 Avoine de printemps \n",
"91 Artichaut \n",
"104 Avoine d’hiver \n",
"\n",
" LIBELLE_GROUPE_CULTURE SURF_PARC \n",
"26 Fourrage 118.12 \n",
"49 Légumes ou fleurs 49.67 \n",
"61 Autres cultures industrielles 29.14 \n",
"78 Autres cultures industrielles 20.14 \n",
"14 Divers 5.31 \n",
"37 Vergers 3.18 \n",
"2 Autres cultures industrielles 277.71 \n",
"117 Autres céréales 877.02 \n",
"91 Légumes ou fleurs 2953.38 \n",
"104 Autres céréales 5176.17 "
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_df"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" LIBELLE_CULTURE | \n",
" LIBELLE_GROUPE_CULTURE | \n",
" SURF_PARC | \n",
"
\n",
" \n",
" \n",
" \n",
" 2 | \n",
" Plantes aromatiques herbacées non pérennes (< ... | \n",
" Autres cultures industrielles | \n",
" 277.71 | \n",
"
\n",
" \n",
" 14 | \n",
" Autre culture pérenne et jachère dans les bana... | \n",
" Divers | \n",
" 5.31 | \n",
"
\n",
" \n",
" 26 | \n",
" Autre plante fourragère annuelle (ni légumineu... | \n",
" Fourrage | \n",
" 118.12 | \n",
"
\n",
" \n",
" 37 | \n",
" Agrume | \n",
" Vergers | \n",
" 3.18 | \n",
"
\n",
" \n",
" 49 | \n",
" Aïl | \n",
" Légumes ou fleurs | \n",
" 49.67 | \n",
"
\n",
" \n",
" 61 | \n",
" Plantes médicinales et à parfum non pérennes (... | \n",
" Autres cultures industrielles | \n",
" 29.14 | \n",
"
\n",
" \n",
" 78 | \n",
" Plante aromatique pérenne non arbustive ou arb... | \n",
" Autres cultures industrielles | \n",
" 20.14 | \n",
"
\n",
" \n",
" 91 | \n",
" Artichaut | \n",
" Légumes ou fleurs | \n",
" 2953.38 | \n",
"
\n",
" \n",
" 104 | \n",
" Avoine d’hiver | \n",
" Autres céréales | \n",
" 5176.17 | \n",
"
\n",
" \n",
" 117 | \n",
" Avoine de printemps | \n",
" Autres céréales | \n",
" 877.02 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" LIBELLE_CULTURE \\\n",
"2 Plantes aromatiques herbacées non pérennes (< ... \n",
"14 Autre culture pérenne et jachère dans les bana... \n",
"26 Autre plante fourragère annuelle (ni légumineu... \n",
"37 Agrume \n",
"49 Aïl \n",
"61 Plantes médicinales et à parfum non pérennes (... \n",
"78 Plante aromatique pérenne non arbustive ou arb... \n",
"91 Artichaut \n",
"104 Avoine d’hiver \n",
"117 Avoine de printemps \n",
"\n",
" LIBELLE_GROUPE_CULTURE SURF_PARC \n",
"2 Autres cultures industrielles 277.71 \n",
"14 Divers 5.31 \n",
"26 Fourrage 118.12 \n",
"37 Vergers 3.18 \n",
"49 Légumes ou fleurs 49.67 \n",
"61 Autres cultures industrielles 29.14 \n",
"78 Autres cultures industrielles 20.14 \n",
"91 Légumes ou fleurs 2953.38 \n",
"104 Autres céréales 5176.17 \n",
"117 Autres céréales 877.02 "
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_df"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "hackathon",
"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.13.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}