Pyramide de population Population

Pour le #Tidytuesday de cette semaine, nous avons accès aux données des animaux de compagnie enregistrés à Seatle. On retrouve les données brutes sur le site Seattle’s open data portal. Peu de données sont présentes, mais nous disposons tout de même de la date de délivrance de la licence, du nom de l’animal, de son espèce, de sa race et de son code postal. On devrait pourvoir s’amuser!

Mes objectifs pour cette semaine:
1) Comparer les noms les plus populaires pour les chats et les chiens.
2) Apprendre comment faire des pyramides de populations

IMPORTER

data<- read_csv("Seattle_Pet_Licenses.csv",
                  col_names = TRUE) #identifier la première ligne comme nom de colonne
FALSE Parsed with column specification:  
FALSE cols(  
FALSE   `License Issue Date` = col_character(),  
FALSE   `License Number` = col_character(),  
FALSE   `Animal's Name` = col_character(),  
FALSE   Species = col_character(),  
FALSE   `Primary Breed` = col_character(),  
FALSE   `Secondary Breed` = col_character(),  
FALSE   `ZIP Code` = col_character()  
FALSE )



EXPLORER

glimpse(data)
## Observations: 52,519  
## Variables: 7  
## $ `License Issue Date` <chr> "November 16 2018", "November 11 2018", "No…  
## $ `License Number`     <chr> "8002756", "S124529", "903793", "824666", "…  
## $ `Animal's Name`      <chr> "Wall-E", "Andre", "Mac", "Melb", "Gingersn…  
## $ Species              <chr> "Dog", "Dog", "Dog", "Cat", "Cat", "Dog", "…  
## $ `Primary Breed`      <chr> "Mixed Breed, Medium (up to 44 lbs fully gr…  
## $ `Secondary Breed`    <chr> "Mix", "Dachshund, Standard Wire Haired", N…  
## $ `ZIP Code`           <chr> "98108", "98117", "98136", "98117", "98144"…
Hmisc::describe(data$Species)
## data$Species   
##        n  missing distinct  
##    52519        0        4   
##                                     
## Value        Cat   Dog  Goat   Pig  
## Frequency  17294 35181    38     6  
## Proportion 0.329 0.670 0.001 0.000
Hmisc::describe(data

Pour le #Tidytuesday de cette semaine, nous avons accès aux données des animaux de compagnie enregistrés à Seatle. On retrouve les données brutes sur le site Seattle’s open data portal. Peu de données sont présentes, mais nous disposons tout de même de la date de délivrance de la licence, du nom de l’animal, de son espèce, de sa race et de son code postal. On devrait pourvoir s’amuser!

Mes objectifs pour cette semaine:
1) Comparer les noms les plus populaires pour les chats et les chiens.
2) Apprendre comment faire des pyramides de populations

IMPORTER

data<- read_csv("Seattle_Pet_Licenses.csv",
                  col_names = TRUE) #identifier la première ligne comme nom de colonne
FALSE Parsed with column specification:  
FALSE cols(  
FALSE   `License Issue Date` = col_character(),  
FALSE   `License Number` = col_character(),  
FALSE   `Animal's Name` = col_character(),  
FALSE   Species = col_character(),  
FALSE   `Primary Breed` = col_character(),  
FALSE   `Secondary Breed` = col_character(),  
FALSE   `ZIP Code` = col_character()  
FALSE )



EXPLORER

glimpse(data)
## Observations: 52,519  
## Variables: 7  
## $ `License Issue Date` <chr> "November 16 2018", "November 11 2018", "No…  
## $ `License Number`     <chr> "8002756", "S124529", "903793", "824666", "…  
## $ `Animal's Name`      <chr> "Wall-E", "Andre", "Mac", "Melb", "Gingersn…  
## $ Species              <chr> "Dog", "Dog", "Dog", "Cat", "Cat", "Dog", "…  
## $ `Primary Breed`      <chr> "Mixed Breed, Medium (up to 44 lbs fully gr…  
## $ `Secondary Breed`    <chr> "Mix", "Dachshund, Standard Wire Haired", N…  
## $ `ZIP Code`           <chr> "98108", "98117", "98136", "98117", "98144"…
Hmisc::describe(data$Species)
## data$Species   
##        n  missing distinct  
##    52519        0        4   
##                                     
## Value        Cat   Dog  Goat   Pig  
## Frequency  17294 35181    38     6  
## Proportion 0.329 0.670 0.001 0.000
License Issue Date`)
## n missing distinct 
## 52519 0 1064 
## 
## lowest : April 01 2017 April 01 2018 April 02 2017 April 02 2018 April 03 2014 
## highest: September 29 2017 September 29 2018 September 30 2015 September 30 2017 September 30 2018

Nous disposons de plusieurs variables, mais pour ce que j’ai en tête j’ai besion de créer un ensemble de données où on voit la fréquence des noms pour les chats et les chiens. Voici comment je m’y prend:

PRÉPARER

data_name<-data%>%
    filter(Species %in% c("Cat", "Dog"))%>% #garder seulement les chiens et les chat    
    select(Species,`Animal's Name`)%>% # conserver seulement les colonnes pertinentes pour l'analyse    
    group_by(Species,`Animal's Name`)%>%
    summarise(nombre=dplyr::n())%>%
    filter(!`Animal's Name`%in% NA)%>%
    filter(nombre>=100)%>% #sélectionner les 37 noms les plus populaires
    mutate(nombre=ifelse(Species=="Cat", -nombre, nombre))#nécessaire pour faire le grapgique



VISUALISER

#Graphique  
gg<-ggplot(data=data_name, aes(x=reorder(`Animal's Name`,desc(`Animal's Name`)), y=nombre, fill=Species))  
gg<-gg + geom_bar(stat = "identity")  
gg<-gg + facet_share(~Species, dir = "h", scales = "free", reverse_num = TRUE)  gg<-gg + coord_flip()  
gg<-gg + scale_fill_manual(values = c("#C1292E", "#235789"))  #modifier la légende  
gg<-gg + theme(legend.position="none")  #modifier le thème  
gg<-gg +theme(panel.border = element_rect(size=0.5, color="#A9A9A9", fill = NA),
                panel.background = element_blank(),
                plot.background = element_blank(),
                panel.grid.major.y= element_blank(),
                panel.grid.major.x= element_blank(),
                panel.grid.minor = element_blank(),
                axis.line.y = element_blank(),
                axis.line.x = element_blank(),
                axis.ticks.y = element_blank(),
                axis.ticks.x = element_blank())  
#ajouter les titres  
gg<-gg + labs(title="Quels sont les noms d'animaux de compagnie les plus populaires à Seatle?",
                subtitle=NULL,
                y=NULL,
                 x=NULL)  
gg<-gg + theme(plot.title    = element_text(hjust=0,size=14, color="#000000", face="bold"),
                 plot.subtitle = element_text(hjust=0,size=12, color="#000000"),
                 axis.title.y  = element_blank(),
                 axis.title.x  = element_blank(),
                 axis.text.x   = element_blank(),
                 axis.text.y   = element_text(hjust=0,size=10, color="#000000"))

Voici ce que ça donne:

On cosntate que les noms les plus populaires pour les chiens ne sont pas nécessairement populaires pour les chats. C’est intéressant, mais ce n’est pas ce que j’avais en tête comme graphique. J’aimerais voir quels sont les noms les plus populaires à la fois pour les chiens et pour les chats. Voici comment on peut ajuster ça:

PRÉPARER

data_name_pop<-data%>%
    filter(Species %in% c("Cat", "Dog"))%>% #garder seulement les chiens et les chat    
    select(Species,`Animal's Name`)%>% # conserver seulement les colonnes pertinentes pour l'analyse
    group_by(Species,`Animal's Name`)%>%
    summarise(nombre=dplyr::n())%>%
    filter(!`Animal's Name`%in% NA)%>% # retirer les lignes sans noms    spread(Species, nombre)%>%
    filter(!Cat %in% NA)%>% #retirer les lignes ou le nom ne s'applique pas au chat
    filter(!Dog %in% NA)%>% #retirer les lignes ou le nom ne s'applique pas au chien
    mutate(somme=Cat+Dog)%>%
    filter(somme >=173)%>% #garder les 20 noms les plus populaires       
    select(`Animal's Name`, Cat, Dog)%>%
    gather(key=Species, value=nombre, -`Animal's Name`)%>%
    mutate(nombre=ifelse(Species=="Cat", -nombre, nombre))#nécessaire pour faire le grapgique



VISUALISER

#Graphique  
gg<-ggplot(data=data_name_pop, aes(x=reorder(`Animal's Name`,desc(`Animal's Name`)), y=nombre, fill=Species))  
gg<-gg + geom_bar(stat = "identity")  
gg<-gg + facet_share(~Species, dir = "h", scales = "free", reverse_num = TRUE)  gg<-gg + coord_flip()  
gg<-gg + scale_fill_manual(values = c("#C1292E", "#235789"))  
#modifier la légende  
gg<-gg + theme(legend.position="none")  
#modifier le thème  
gg<-gg +theme(panel.border = element_rect(size=0.5, color="#A9A9A9", fill = NA),
                panel.background = element_blank(),
                plot.background = element_blank(),
                panel.grid.major.y= element_blank(),
                panel.grid.major.x= element_blank(),
                panel.grid.minor = element_blank(),
                axis.line.y = element_blank(),
                axis.line.x = element_blank(),
                axis.ticks.y = element_blank(),
                axis.ticks.x = element_blank())  
#ajouter les titres  
gg<-gg + labs(title="Quels sont les noms les plus populaires pour les chats et les chiens de Seatle?",
                subtitle="Lucy est le nom le plus utilisé pour leur animaux de compagine",
                y=NULL,
                 x=NULL)  
gg<-gg + theme(plot.title    = element_text(hjust=0,size=14, color="#000000", face="bold"),
                 plot.subtitle = element_text(hjust=0,size=12, color="#000000"),
                 axis.title.y  = element_blank(),
                 axis.title.x  = element_blank(),                 axis.text.x   = element_blank(),
                 axis.text.y   = element_text(hjust=0,size=10, color="#000000"))

Voici ce que ça donne:

On obtient deux histogrammes dos à dos qui montrent les fréquences des noms qui sont à la fois utilisés pour les chiens et les chats.

Tu veux en apprendre plus sur ma démarche? Va écouter l’épisode de podcast dans lequel j’explique mes réflexions pour arriver à ce résultat.

Publicités

2 réflexions sur “Pyramide de population Population

  1. Pingback: Podcast ADV#2: Utiliser des histrogrammes pour comparer des populations | Johanie Fournier, agr.

  2. Pingback: ADV2 - Utiliser des histogrammes pour comparer des populations | Johanie Fournier, agr.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.