Répondre à la question : La fréquentation de nos mangeoires par les mésanges change-t-elle au cours de l’année ?
Filtrer des données
Extraire des éléments d'une date
Calcul de fréquence de présence
Représentation graphique
La fréquentation de nos mangeoires par les mésanges change-t-elle au cours de l’année ?
Pour répondre à notre question de recherche, nous allons avoir besoin des données de Vigie-Nature École relatives à l'observatoire Oiseaux des jardins afin d'avoir des observations de toutes les espèces de mésanges (en effet il y en a 6 dans le protocole oiseaux des jardins) et des observations sur tous les mois de l'année.
from matplotlib import pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
from datetime import datetime
import seaborn as sns
Oiseau = pd.read_csv('Oiseau.csv')
Oiseau
Unnamed: 0 | numero_observation | zonepk | date_observation | code_postal_etablissement | ville_etablissement | latitude | longitude | espece | nombre_individus | ... | heure_fin | type_de_milieu | surface_zone | distance_bois | distance_prairie | distance_champ | pourcentage_milieux_urbanisés_200m | departement | region | academie | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Huppe fasciée | 0 | ... | 11:50:39 | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles |
1 | 1 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Accenteur mouchet | 0 | ... | 11:50:39 | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles |
2 | 2 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Gobemouche gris | 0 | ... | 11:50:39 | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles |
3 | 3 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Bergeronnette grise | 0 | ... | 11:50:39 | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles |
4 | 4 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Bruant jaune | 0 | ... | 11:50:39 | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
155299 | 155299 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Chardonneret élegant | 0 | ... | 15:35:00 | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours |
155300 | 155300 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Chardonneret élegant | 0 | ... | 15:35:00 | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours |
155301 | 155301 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Hirondelle rustique | 0 | ... | 15:35:00 | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours |
155302 | 155302 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Hirondelle rustique | 0 | ... | 15:35:00 | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours |
155303 | 155303 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Pie bavarde | 0 | ... | 15:35:00 | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie |
155304 rows × 21 columns
Comme nous souhaitons étudier les variations temporelles, nous allons choisir le pas de temps qui nous intéresse. Le mois est intéressant car il permet d'avoir beaucoup de données tout en étant assez précis pour voir des différences dans les observations chez les mésanges.
Nous définissons le format de la colonne 'date_observation' en format date puis nous créons une nouvelle colonne contenant le mois d'observation.
Oiseau['date_observation'] = pd.to_datetime(Oiseau['date_observation'])
Oiseau['Mois'] = Oiseau.date_observation.dt.month
Oiseau
Unnamed: 0 | numero_observation | zonepk | date_observation | code_postal_etablissement | ville_etablissement | latitude | longitude | espece | nombre_individus | ... | type_de_milieu | surface_zone | distance_bois | distance_prairie | distance_champ | pourcentage_milieux_urbanisés_200m | departement | region | academie | Mois | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Huppe fasciée | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
1 | 1 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Accenteur mouchet | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
2 | 2 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Gobemouche gris | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
3 | 3 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Bergeronnette grise | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
4 | 4 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Bruant jaune | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
155299 | 155299 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Chardonneret élegant | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155300 | 155300 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Chardonneret élegant | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155301 | 155301 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Hirondelle rustique | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155302 | 155302 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Hirondelle rustique | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155303 | 155303 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Pie bavarde | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie | 2 |
155304 rows × 22 columns
Il va falloir sélectionner les données qui nous intéressent. Nous allons sélectionner les lignes qui contiennent les Mésanges afin de garder toutes les espèces de mésanges.
espece = ['Mésange charbonnière', 'Mésange noire', 'Mésange bleue', 'Mésange à longue queue', 'Mésange nonnette', 'Mésange huppée']
Mesange= Oiseau[Oiseau.espece.isin(espece)]
Mesange
Unnamed: 0 | numero_observation | zonepk | date_observation | code_postal_etablissement | ville_etablissement | latitude | longitude | espece | nombre_individus | ... | type_de_milieu | surface_zone | distance_bois | distance_prairie | distance_champ | pourcentage_milieux_urbanisés_200m | departement | region | academie | Mois | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 7 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Mésange charbonnière | 5 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
10 | 10 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Mésange noire | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
17 | 17 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Mésange bleue | 4 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
18 | 18 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Mésange à longue queue | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
20 | 20 | 94923 | 91804 | 2015-11-17 | 92000 | Nanterre | 48.8825 | 2.20161 | Mésange nonnette | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 05_au-delà de 2 km | 05_au-delà de 2 km | 05_au-delà de 2 km | 1.0 | Hauts-de-Seine | Île-de-France | Académie de Versailles | 11 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
155232 | 155232 | 104098 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Mésange noire | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155273 | 155273 | 104098 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Mésange à longue queue | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155274 | 155274 | 104098 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Mésange à longue queue | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155291 | 155291 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Mésange bleue | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
155292 | 155292 | 104099 | 92799 | 2021-02-04 | 28110 | Lucé | 48.4385 | 1.46539 | Mésange bleue | 0 | ... | 01_Urbain | 02_21 à 100 m2 | 01_moins de 50 m | 03_501 à 1000 m | 05_au-delà de 2 km | 1.0 | Eure-et-Loir | Centre-Val de Loire | Académie d'Orléans-Tours | 2 |
16348 rows × 22 columns
La nouvelle colonne crée contient le mois de l'observation. Nous allons maintenant regrouper les données selon les valeurs de cette colonne. Il faut pour cela, compter le nombre de fois où l'on a vu un individidu d'une espèce de mésange.
MesangeMois = pd.DataFrame({
'nombre_individus': Mesange.groupby(['espece', 'Mois'])['nombre_individus'].sum(),
'nombre_observation': Mesange.groupby(['espece', 'Mois'])['numero_observation'].count(),
})
MesangeMois
nombre_individus | nombre_observation | ||
---|---|---|---|
espece | Mois | ||
Mésange bleue | 1 | 394 | 599 |
2 | 254 | 322 | |
3 | 264 | 345 | |
4 | 101 | 316 | |
5 | 41 | 196 | |
... | ... | ... | ... |
Mésange à longue queue | 7 | 0 | 23 |
9 | 3 | 171 | |
10 | 6 | 114 | |
11 | 14 | 235 | |
12 | 27 | 316 |
66 rows × 2 columns
Nous connaissons maintenant le nombre de fois où chaque espèce a été vue. Avant de regarder les observations par espèces, nous vous proposons de regarder la répartition des observations dans l'année.
MesangeMois = MesangeMois.reset_index()
sns.relplot(data=MesangeMois, x=MesangeMois['Mois'], y=MesangeMois['nombre_individus'])
<seaborn.axisgrid.FacetGrid at 0x2bc04a44400>
Le protocole est davantage réalisé en hiver et les observations sont très rares en été (notamment à cause des vacances). Il y a plus d'observations à certaines périodes de l'année, il est donc possible qu'on observe plus de mésanges en hiver car on a plus observé durant cette saison et non parce qu'il y a plus de mésanges.
Pour obtenir un résultat qui ne soit pas biaisé par les différences de nombre de sessions d'observations, nous allons calculer des fréquences en divisant le nombre d'observations de l'espèce par le nombre total d'observations.
Afin que la fréquence soit plus simple à interepréter, vous pouvez la multiplier par 100 pour qu'elle soit exprimée en pourcentage.
MesangeMois['fréquence_observation (%)'] = (MesangeMois['nombre_individus']/MesangeMois['nombre_observation'])*100
MesangeMois
espece | Mois | nombre_individus | nombre_observation | fréquence_observation (%) | |
---|---|---|---|---|---|
0 | Mésange bleue | 1 | 394 | 599 | 65.776294 |
1 | Mésange bleue | 2 | 254 | 322 | 78.881988 |
2 | Mésange bleue | 3 | 264 | 345 | 76.521739 |
3 | Mésange bleue | 4 | 101 | 316 | 31.962025 |
4 | Mésange bleue | 5 | 41 | 196 | 20.918367 |
... | ... | ... | ... | ... | ... |
61 | Mésange à longue queue | 7 | 0 | 23 | 0.000000 |
62 | Mésange à longue queue | 9 | 3 | 171 | 1.754386 |
63 | Mésange à longue queue | 10 | 6 | 114 | 5.263158 |
64 | Mésange à longue queue | 11 | 14 | 235 | 5.957447 |
65 | Mésange à longue queue | 12 | 27 | 316 | 8.544304 |
66 rows × 5 columns
Afin de voir la répartition des données, il faut maintenant faire une représentation de la fréquence d'observations au cours de l'année.
sns.relplot(data=MesangeMois, x=MesangeMois['Mois'], y=MesangeMois['fréquence_observation (%)'],
hue=MesangeMois['espece'], style=MesangeMois['espece'], kind='line')
<seaborn.axisgrid.FacetGrid at 0x2bc037c6820>
On remarque que les mésanges charbonnières et bleues sont particulièrement présentes en hiver. Cette présence peut-être expliquée par leur présence sur les mangeoires.
Le reste de l'année, les espèces de mésanges se comportent plutôt de la même manière.
On remarque un pic de fréquentation de mésanges noires en été. Toutefois, il faut se souvenir du premier graphique. Il y a très peu de données pendant les vacances. Les données sont donc moins fiables à cette période et le pic est sans doute lié au manque de données.
On peut donc conclure que les mésanges charbonnières et bleues sont les plus fréquentes en hiver. Sans doute car elles visitent les mangeoires et que les autres espèces sont moins visibles toute l'année.