logo

STAT101_XL BdF Bâtons (11 minutes)

STAT101_XL BdF Bâtons (11 minutes)

STAT101_XL BdF Comptages (9 minutes)

STAT101_XL BdF Dispersion (18 minutes)

STAT101_XL BdF Quantiles (9 minutes)

STAT101_XL BdF Moyenne, médiane (10 minutes)

STAT101_XL BdF Vocabulaire (17 minutes)

Organisation de la leçon (valable pour toutes les pages de ce cours, sauf les exercices et les QCM) 1) Un support Powerpoint à lire (pas de son). Possibilité de le télécharger ou de le passer en plein écran (en bas à droite du diaporama). Pour faire défiler les diapos, il suffit de cliquer dessus. 2) Une vidéo (avec du son) pour revenir sur les exemples du support. Possibilité de plein écran (en bas à droite, juste à côté de VIMEO). […]

SEG8 Invites (17 minutes)

SEG8 Exports (7 minutes)

SEG8 Imports (11 minutes)

SEG8 Formats personnalisés (17 minutes)

SEG8 Tris et doublons (9 minutes)

SEG8 Diagrammes en bâtons (6 minutes)

SEG8 Tableaux croisés (19 minutes)

SEG8 Comptages (10 minutes)

SEG8 Tâches, principe (13 minutes)

SEG8 Jointures (13 minutes)

SEG8 Agrégation (11 minutes)

SEG8 Colonnes calculées (19 minutes)

SEG8 Tri (4 minutes)

SEG8 Sélection de colonnes (4 minutes)

SEG8 Plusieurs filtres (30 minutes)

SEG8 Filtres (30 minutes)

SEG8 Générateur de requêtes (11 minutes)

SEG8 Types de données (6 minutes)

SEG8 Table SAS (6 minutes)

SEG8 Bibliothèque (15 minutes)

SEG8 Interface (16 minutes)

SEG8 Fonctionnement (15 minutes)

Organisation de la leçon (valable pour toutes les pages de ce cours, sauf les exercices et les QCM) 1) Un support Powerpoint à lire (pas de son). Possibilité de le télécharger ou de le passer en plein écran (en bas à droite du diaporama). Pour faire défiler les diapos, il suffit de cliquer dessus. 2) Une vidéo (avec du son) pour revenir sur les exemples du support. Possibilité de plein écran (en bas à droite, juste à côté de VIMEO). […]

SEG1 Allianz Correction – EXERCICE N°10

A partir de TF_POLICES, démarrer la tâche DECRIRE > TABLES DE SYNTHESE. Glisser CD_TYP dans le rôle VARIABLES DE CLASSIFICATION et MT_PRIM dans VARIABLES D’ANALYSE. Dans la rubrique TABLES DE SYNTHESE, produire cette configuration. Par des clics droits > PROPRIETES DE L’EN-TETE, modifier les libellés des cases MT_PRIM et TOTAL et vider les libellés des cases SUM et CD_TYP. Par un clic droit dans le tableau > PROPRIETES DE LA CASE, changer le libellé vide pour le texte « Type d’assurance ». […]

SEG1 Allianz Correction – EXERCICE N°9

Démarrer le générateur de requêtes à partir de TF_POLICES. Cliquer sur AJOUTER DES TABLES (à gauche sous COLONNES CALCULEES) et sélectionner la table créée à l’exercice 8. Cliquer sur le bouton JOINDRE DES TABLES. Y indiquer que ID_POL est la variable à faire correspondre dans les deux tables et qu’on souhaite garder TOUTES LES LIGNES DE LA TABLE DE GAUCHE. On obtient cette configuration : Fermer cette fenêtre. Faire glisser dans SELECTIONNER LES DONNEES toutes les colonnes de TF_POLICES et y […]

SEG1 Allianz Correction – EXERCICE N°8

Démarrer le générateur de requêtes à partir de TF_SINISTRES. Dans l’onglet SELECTIONNER LES DONNEES, glisser en tête la colonne ID_POL, puis la colonne MT_SIN. Sur MT_SIN, choisir le récapitulatif SUM. En double-cliquant sur le NOM DE LA COLONNE on peut la renommer pour que la sortie soit plus facile à lire. Dans l’onglet FILTRER LES DONNEES, créer une condition sur DT_SIN avec l’opérateur COMPRIS ENTRE et les valeurs 01/01/1986 et 31/12/1986.

SEG1 Allianz Correction – EXERCICE N°7

Démarrer le générateur de requêtes à partir de TF_POLICES. Nommer la requête et la table en sortie. Glisser toutes les colonnes dans SELECTIONNER LES DONNEES. Dans FILTRER LES DONNEES, faire une condition avec LB_VIL et l’opérateur N’EST PAS MANQUANT. Enfin, cliquer sur le bouton COLONNES CALCULEES en haut à gauche pour en créer une NOUVELLE (choisir EXPRESSION AVANCEE). Les formules sont respectivement SUBSTR(CD_CDP,1,2) pour DEPARTEMENT et YEAR(TODAY())-YEAR(DT_NAIS) pour AGE.

SEG1 Allianz Correction – EXERCICE N°6

Créer une invite (en bas à gauche, avec le symbole à droite de SERVEURS puis le bouton AJOUTER). Dans l’onglet TYPE D’INVITE ET VALEURS, choisir comme METHODE D’ALIMENTATION DE L’INVITE une SELECTION DANS UNE LISTE STATIQUE. Cliquer ensuite sur le bouton OBTENIR VALEURS en bas à droite, choisir la table TF_POLICES comme SOURCE DE DONNEES, la colonne CD_SITF et OBTENIR VALEURS. Bien penser à cliquer sur la flèche double pour basculer toutes les valeurs dans la liste en bas à […]

SEG1 Allianz Correction – EXERCICE N°5

A partir de TF_POLICES, démarrer la tâche DECRIRE > FREQUENCES A UN CRITERE DE CLASSIFICATION. Glisser CD_TYP dans le rôle VARIABLES D’ANALYSE. Dans la rubrique STATISTIQUES choisir FREQUENCES ET POURCENTAGES sur la gauche de l’écran (c’est le 3e choix). Exécuter.

SEG1 Allianz Correction – EXERCICE N°4

Démarrer le générateur de requêtes à partir de TF_POLICES. Nommer la requête et la table en sortie. Glisser les colonnes demandées dans SELECTIONNER LES DONNEES. Puis dans FILTRER LES DONNEES, définir deux filtres : sur CD_TYP avec l’opérateur EGAL A et la valeur COASS en majuscules ; et sur CD_PER avec l’opérateur DANS UNE LISTE et les valeurs A et S en majuscules.

SEG1 Allianz Correction – EXERCICE N°3

Démarrer le générateur de requêtes à partir de TF_POLICES. Nommer la requête et la table en sortie, puis glisser toutes les colonnes dans la sélection puis dans FILTRER LES DONNEES. Construire 3 conditions : 1) sur CD_TYPE avec l’opérateur EGAL A et la valeur IARD en majuscule (on peut utiliser la recherche de valeurs par prudence) ; 2) sur CD_CDP avec l’opérateur CORRESPOND AU MODELE et la valeur 75% ; 3) sur CD_CDP encore avec l’opérateur CORRESPOND AU MODELE et la valeur […]

SEG1 Allianz Correction – EXERCICE N°2

Dans ASSURLIB, vous trouvez TF_POLICES : le glisser dans le flux de votre projet. Puis démarrer le générateur de requêtes, nommer la requête et la table en sortie, glisser toutes les colonnes dans la sélection et dans l’onglet FILTRER LES DONNEES, sélectionner la colonne MT_PRIM, la glisser à droite, prendre l’opérateur SUPERIEUR A et saisir la valeur 1500 (sans espace). Exécuter la requête.

SEG1 Allianz Correction – EXERCICE N°1

Cliquer sur Suivant puis Terminer. En bas à gauche de SAS Enterprise Guide, dans SERVEURS puis BIBLIOTHEQUES, vous devriez voir ASSURLIB. Si ce n’est pas le cas, un clic droit ACTUALISER sur BIBLIOTHEQUES doit rafraîchir la vue.

SEG1 Allianz EXERCICE N°10

Produire le tableau ci-dessous à partir de TF_POLICES.

SEG1 Allianz EXERCICE N°9

Joindre les données TF_POLICES et la table créée à l’exercice 8 de manière à conserver tous les contrats et à ajouter quand c’est possible le montant de leurs sinistres. Calculer une colonne RATIO qui sera le S/P, c’est la dire la division du montant des sinistres par le montant des primes (MT_PRIM), en comptant 0 si le contrat n’a pas eu de sinistres.

SEG1 Allianz EXERCICE N°8

Calculer à partir des TF_SINISTRES le montant total des sinistres (MT_SIN) par contrat (ID_POL) pour les sinistres survenus dans l’année 1986.

SEG1 Allianz EXERCICE N°7

Ajouter aux données TF_POLICES deux nouvelles colonnes : le département avec les deux premiers caractères du code postal (CD_CDP) et l’âge du souscripteur au 31/12 à partir de sa date de naissance DT_NAIS. Pour le calcul de l’âge, les fonctions TODAY et YEAR vous permettront de faire les calculs (un client né en 1970 aura 51 ans d’ancienneté tout au long de l’année 2021). Exclure du résultat les contrats dont la ville LB_VIL n’est pas renseignée.

SEG1 Allianz EXERCICE N°6

Avec une invite, paramétrer une requête sur la situation familiale des souscripteurs de contrats pour qu’elle liste les polices souscrites par ces personnes (colonne CD_SITF dans TF_POLICES).   Bonus (dans un 2e temps) : essayer peupler la liste de valeurs proposées pour cette invite avec la table TD_SITF pour proposer des libellés en clair et récupérer les codes sur une lettre.

SEG1 Allianz EXERCICE N°5

Compter à partir de TF_POLICES le nombre de contrats et le pourcentage qu’ils représentent en fonction de leur type (CD_TYP). On ne souhaite pas avoir de cumuls des fréquences ni des pourcentages dans le résultat.

SEG1 Allianz EXERCICE N°4

A partir de la table TF_POLICES, ne retenir que les colonnes identifiant le contrat (ID_POL), le montant de la prime (MT_PRIM) et la périodicité de paiement (CD_PER) pour les contrats de coassurance (CD_TYP vaut COASS) de périodicités annuelle ou semestrielle (A ou S). Il y en a 4, tous annuels.

SEG1 Allianz EXERCICE N°3

Lister à partir de la table TF_POLICES les contrats d’assurance IARD (colonne CD_TYP) dont le souscripteur réside sur Paris (CD_CDP commence par 75) ou dans les Hauts de Seine (CD_CDP commence par 92). Il y en a 87.

SEG1 Allianz EXERCICE N°2

Avec une requête, sélectionnez dans TF_POLICES les polices dont le montant des primes (MT_PRIM) est supérieur strictement à 1500. Il doit y en avoir 204.

SEG1 Allianz EXERCICE N°1

Une fois récupéré, dézippez le fichier des données dans un répertoire ASSURLIB sur le serveur SAS.   Créer une bibliothèque de projet pointant vers le répertoire ASSURLIB dans votre répertoire personnel du serveur SAS.

seg1 allianz Diagrammes en bâtons (6 minutes)

seg1 allianz Tableaux croisés (19 minutes)

seg1 allianz Jointures (13 minutes)

seg1 allianz Agrégation (11 minutes)

seg1 allianz Colonnes calculées (19 minutes)

seg1 allianz Invites (17 minutes)

seg1 allianz Caractéristiques d’une table (9 minutes)

seg1 allianz Tris et doublons (13 minutes)

seg1 allianz Comptages (10 minutes)

seg1 allianz Tâches, principe (13 minutes)

seg1 allianz Tri (4 minutes)

seg1 allianz Sélection de colonnes (4 minutes)

seg1 allianz Plusieurs filtres (9 minutes)

seg1 allianz Filtres (30 minutes)

seg1 allianz Générateur de requêtes (11 minutes)

seg1 allianz Types de données (6 minutes)

seg1 allianz Table SAS (6 minutes)

seg1 allianz Bibliothèque (15 minutes)

seg1 allianz Interface (16 minutes)

seg1 allianz Fonctionnement (15 minutes)

Organisation de la leçon (valable pour toutes les pages de ce cours, sauf les exercices et les QCM) 1) Un support Powerpoint à lire (pas de son). Possibilité de le télécharger ou de le passer en plein écran (en bas à droite du diaporama). Pour faire défiler les diapos, il suffit de cliquer dessus. Les supports peuvent être récupérés ici : http://www.od-datamining.com/data/supports_allianz_seg1_ppt.zip 2) Une vidéo (avec du son) pour revenir sur les exemples du support. Possibilité de plein écran (en […]

données BDF Présentation des données Police-Sinistre

Les données consistent en 5 tables SAS, au sein desquelles nous distinguerons deux ensembles : Les tables « principales », la table des contrats (Tf_Polices) et la table des sinistres (Tf_Sinistres) Quelques tables de correspondance (Td_Sex, Td_Sitf et Td_Typ) Ces données décrivent le fonctionnement du monde de l’assurance avec des contrats ou polices souscrits par des clients. A certains contrats sont associés des évènements ou sinistres (vol, accident, perte d’un bien, dégât des eaux, perte d’exploitation, etc.). Table TF_POLICES La […]

RBASE BDF V2 Correction – EXERCICE N°12

library(ggplot2) ggplot(bilans_2004) + aes(x=D26, fill=EXPORTE) + geom_bar()

RBASE BDF V2 EXERCICE N°12

Les descriptifs des fichiers sont ici. Représenter par un diagramme en bâtons empilés la part des entreprises qui exportent selon le secteur d’activité (D26). La variable EXPORTE a été créée à l’exercice 4.

RBASE BDF V2 Correction – EXERCICE N°11

# packages utiles —- library(dplyr) # requêtes library(reshape2) # transposition # transposition —- bilans_2004 %>% dcast(D26 ~ EXPORTE, value.var = « D1 », fun.aggregate = length)

RBASE BDF V2 EXERCICE N°11

Les descriptifs des fichiers sont ici. A partir des données du data.frame bilans_2004, construire un tableau croisé avec D26 en lignes, EXPORTE (créée à l’exercice 4) en colonnes et le nombre d’entreprises (qu’on peut compter avec la fonction length appliquée à D1) dans les cases.

RBASE BDF V2 Correction – EXERCICE N°10

round( prop.table(table(bilans_2004$CA, bilans_2004$EXPORTE), 1)*100, 1)

RBASE BDF V2 EXERCICE N°10

Les descriptifs des fichiers sont ici. A partir des données bilans_2004 telles que l’exercice 4 les a améliorées, construire un tableau indiquant par tranche de chiffre d’affaires la répartition entre entreprises qui exportent ou non, sous forme de % ligne (chaque tranche de CA = 100%). Arrondir ces pourcentages à une seule décimale.

RBASE BDF V2 Correction – EXERCICE N°9

library(dplyr) bilans_2004 %>% group_by(D26) %>% summarise(CA_moyen = mean(FJ, na.rm=TRUE)) %>% ungroup() %>% arrange(desc(CA_moyen)) bilans_2004 %>% group_by(D26) %>% summarise(CA_moyen = mean(FJ, na.rm=TRUE)) %>% ungroup() %>% arrange(desc(CA_moyen)) %>% slice(1:3)

RBASE BDF V2 EXERCICE N°9

Les descriptifs des fichiers sont ici. Quel est le chiffre d’affaires (CA) France moyen (FJ) des bilans_2004 par secteur d’activité (D26) ? Quels sont les 3 secteurs où les CA moyens sont les plus élevés ? Réponse : 1-ED, 2-EG, 3-EN

RBASE BDF V2 Correction – EXERCICE N°8

library(dplyr) bilans_2004 %>% filter(D5==12) %>% summarise(mean(FJ,na.rm=TRUE)) # autre solution (pull permet d’extraire un vecteur) bilans_2004 %>% filter(D5==12) %>% pull(FJ) %>% mean(na.rm=TRUE)

RBASE BDF V2 EXERCICE N°8

Les descriptifs des fichiers sont ici. Parmi les bilans établis sur 12 mois, quel est le chiffre d’affaires France moyen dans les bilans clos en 2004 ? Réponse : 9 440,229 k€

RBASE BDF V2 Correction – EXERCICE N°7

# packages utiles —- library(dplyr) # requêtes library(openxlsx) # export vers Excel # export simple —- bilans_2004 %>% filter(D23== »602N ») %>% write.xlsx(file= »c:/temp/bilans 2004.xlsx », asTable=TRUE, sheetName= »Déménageurs », overwrite=TRUE)

RBASE BDF V2 EXERCICE N°7

Les descriptifs des fichiers sont ici. Créer un classeur Excel contenant une feuille nommée « Déménageurs » avec les bilans 2004 des entreprises de déménagement (code activité D23 valant 602N).

RBASE BDF V2 Correction – EXERCICE N°6

library(dplyr) bilans_2004_tries % arrange(FJ, K00068)

RBASE BDF V2 EXERCICE N°6

Les descriptifs des fichiers sont ici. Trier les bilans_2004 par chiffre d’affaires France (FJ) croissant ; en cas d’ex-aequos sur le CA, on les trie par valeur ajoutée (K00068), toujours par ordre croissant.

RBASE BDF V2 Correction – EXERCICE N°5

library(dplyr) demenageurs % filter(D23== »602N ») actifs % filter(etat== »Actif ») demenageurs_actifs % inner_join(actifs, by=c(« D1″= »siren »))

RBASE BDF V2 EXERCICE N°5

Les descriptifs des fichiers sont ici. Créer un data.frame contenant les bilans des entreprises de déménagement (code activité D23 valant 602N) toujours actives (colonne etat dans siren) à partir de siren et bilans_2004. Ils doivent être 10.

RBASE BDF V2 Correction – EXERCICE N°4

# packages utiles —- library(tibble) # visualisation des données library(lubridate) # gestion des dates library(dplyr) # requêtes # type de la colonne siren$dateCreation —- glimpse(siren) # conversion en Date et ancienneté —- siren % mutate(DATE_CREA = as.Date(dateCreation), ANC = (today() – DATE_CREA) / dyears(1)) # ajout de colonnes à BILANS_2004 —- bilans_2004 % mutate(EXPORTE = ifelse(FK == 0, « Non », « Oui »), CA_TOTAL = FJ + FK, CA = cut(CA_TOTAL, breaks=c(-Inf, 500, 1000, 5000, Inf), dig.lab = 10))

RBASE BDF V2 EXERCICE N°4

Les descriptifs des fichiers sont ici. L’objet siren on trouve la date de création de l’entreprise dans dateCreation. Quel est son type ? En dériver une colonne DATE_CREA de type Date. S’en servir pour calculer l’ancienneté de l’entreprise (la stocker dans la colonne ANC) par rapport à la date du jour. Ajouter au data.frame bilans_04 trois nouvelles colonnes : EXPORTE vaut NON ou OUI selon que FK est nul ou non ; CA_TOTAL est la somme de FJ et FK […]

RBASE BDF V2 Correction – EXERCICE N°3

library(dplyr) # commerces déficitaires en 2004—- commerces_deficitaires % filter(DI < 0 & D26 == "EJ") # entreprises du secteur des services ---- services % filter(D26 %in% c("EN","EP")) # autre solution sans %in% services % filter(D26 == "EN" | D26 == "EP")) # entreprises familiales ---- en_famille % filter(grepl("ET FIL(LE)*S", denom)) # autre solution sans utiliser d'expression régulière ---- en_famille % filter(grepl("ET FILS" , denom) | grepl("ET FILLES", denom) )

RBASE BDF V2 EXERCICE N°3

Les descriptifs des fichiers sont ici. Créer… un objet commerces_deficitaires à partir des bilans_2004 dont le résultat (DI) est négatif et dont le secteur d’activité (D26) est EJ (è 392 obs) un objet services des entreprises ayant un secteur d’activité (D26) dans les services (valeurs EN et EP) à partir du data.frame bilans_2004 (è 1754 obs) un objet en_famille à partir des entreprises (data.frame siren) dont le nom (DENOM) contient « ET FILS » ou « ET FILLES » (è 92 obs)

RBASE BDF V2 Correction – EXERCICE N°2

# afficher les 20 premières lignes # de l’objet bilans_2004 library(dplyr) bilans_2004 %>% slice(1:20)

RBASE BDF V2 EXERCICE N°2

Les descriptifs des fichiers sont ici. Afficher dans la Console les 20 premières lignes du data.frame bilans_2004

RBASE BDF V2 Correction – EXERCICE N°1

# packages utiles —- library(haven) # import tables SAS library(readxl) # import fichiers Excel # répertoire par défaut setwd(« C:/olivier/bdf ») # imports —- bilans_2004

RBASE BDF V2 EXERCICE N°1

Les descriptifs des fichiers sont ici. Importer les fichiers BILANS_2004.XLSX (dans un objet appelé bilans_2004) BILANS_2005.SAS7BDAT (dans un objet appelé bilans_2005) SIREN.CSV (dans un objet appelé siren)

rbase bdf Graphiques, bâtons (12 minutes)

    library(ggplot2) # beaux graphiques # bâtons par fréquence du type de location ggplot(flats) + aes(x=room_type) + geom_bar() # bâtons horizontaux ggplot(flats) + aes(y=room_type) + geom_bar() # barres empilées ggplot(flats) + aes(x=tranche_prix, fill=room_type) + geom_bar() # en fixant les couleurs ggplot(flats) + aes(x=tranche_prix, fill=room_type) + geom_bar() + scale_fill_manual(values=c(« green », »orange », »purple »)) library(viridis) # palettes de couleurs ggplot(flats) + aes(x=tranche_prix, fill=room_type) + geom_bar() + scale_fill_viridis_d(option= »magma ») # barres côte à côte ggplot(flats) + aes(x=property_type, fill=room_type) + geom_bar(position= »dodge ») # barres empilées 100% ggplot(flats) + aes(x=property_type, […]

rbase bdf Graphiques, principe de {ggplot2} (5 minutes)

   

rbase bdf Transpositions, tableaux croisés (29 minutes)

    # régularisation des données textuelles library(reshape2) # transpositions library(stringi) # fonctions pour les textes houses2 % tolower() %>% stri_trans_general(id = « Latin-ASCII »)) houses3 % # on supprime aussi les lignes vides filter(!is.na(equipement)) # prix moyen des logements par mois library(lubridate) # gestion des dates prix % mutate(annee = year(as.Date(date)), mois = month(as.Date(date), label=TRUE, abbr=FALSE)) %>% # transposition : chaque combinaison mois x année –> 1 colonne # les lignes sont par logement dcast(listing_id ~ annee + mois, value.var= »price », fun […]

rbase bdf Comptages et pourcentages (12 minutes)

    # nombre d’appartements par type de location table(flats$room_type) addmargins(table(flats$room_type)) # + total # en pourcentage addmargins(table(flats$room_type))/nrow(flats) # version « brute » addmargins(prop.table(table(flats$room_type))) # avec prop.table round(addmargins(prop.table(table(flats$room_type)))*100,1) # et mise en forme # appartements par quartier et type de location table(flats$neighbourhood_cleansed, flats$room_type) # on peut le stocker dans un objet tableau

rbase bdf Statistiques par groupe (8 minutes)

    # prix moyen par quartier flats %>% group_by(neighbourhood_cleansed) %>% summarise(mean(price)) # prix moyen par type de logement et de location flats %>% group_by(room_type, property_type) %>% summarise(mean(price)) # plusieurs statistiques flats %>% group_by(room_type, property_type) %>% summarise(moy=mean(price), med=median(price), n=length(price)) # niveaux de groupement : # top 5 des loueurs proposant le plus d’appartements flats %>% group_by(host_id, host_name) %>% # les données sont groupées selon host_id et host_name summarise(nb_apparts = length(id)) %>% # les données sont groupées selon host_id seulement arrange(desc(nb_apparts)) […]

rbase bdf Moyenne, médiane, somme, etc. (12 minutes)

    mean(flats$price) # prix moyen flats %>% summarise(median(price)) # prix médian length(flats$price) # nombre de valeurs dans prix… nrow(flats) # … égal au nombre de lignes du data.frame quantile(flats$price) # quartiles de prix quantile(flats$price, seq(0,1,by=0.1)) # déciles de prix mean(flats$review_scores_rating) # moyenne des notes moyennes mean(flats$review_scores_rating, na.rm=TRUE) # sans tenir compte des NA # moyenne des variables dont le nom finit par « rooms » flats %>% summarise_at(vars(ends_with(« rooms »)), mean, na.rm=TRUE) sum(is.na(flats$review_scores_rating)) # nombre de NA dans les notes sum(!is.na(flats$review_scores_rating)) # nombre […]

rbase bdf Statistiques globales (8 minutes)

    # description des colonnes de flats summary(flats) library(skimr) # statistiques descriptives globales # variante avec le package {skimr} skim(flats) skim_without_charts(flats)