tri croisé

Le tri à plat et le tri croisé avec R et Python

Emmanuel Jakobowicz Mis à jour le : 8 février 2019 méthode 3 Comments

Le tri à plat et le tri croisé - des statistiques descriptives simples

La question peut paraître simple mais il s'agit d'une question récurrente lors de formations orientées statistiques pour des non statisticiens.

Tri à plat

Utilisons un exemple : lors d'une enquête vous avez obtenu la catégorie socio-professionnelle de vos répondants. Celle-ci est une variable qualitative. Le tri à plat est représenté sous forme d'un tableau dans lequel la répartition des répondants dans les différentes catégories socio-professionnelles est affichée.

Il s'agit tout simplement de statistiques descriptives pour une variable qualitative. La représentation classique d'un tri à plat est un graphique en bâtons.

Tri croisé

Utilisons un exemple : lors d'une enquête vous avez obtenu la catégorie socio-professionnelle et la ville de résidence de vos répondants. Il s'agit de variables qualitatives. Le tri croisé consiste en la construction d'un tableau croisant ces deux variables : une ligne correspond à une modalité de la première variable et une colonne correspond à une modalité de la seconde variables. Les valeurs dans le tableau correspondent au comptage du nombre d'individus ayant ces deux caractéristiques. Ainsi on pourra voir le nombre de CSP- vivant à Paris.

Il s'agit tout simplement de statistiques bivariées pour deux variables qualitatives. Le tableau obtenu est aussi appelé tableau croisé ou tableau de contingence.

Faire un tri à plat avec Python ou R

python

Avec Python, nous utiliserons directement le package pandas pour effectuer des tris à plat sur des colonnes d'un DataFrame.

Supposons que nous avons récupéré des données au format csv, nous utilisons :

import pandas as pd

data = pd.read_csv("data.csv")

Les données qui nous intéressent sont dans la colonne csp, nous allons donc faire un tri à plat sur cette colonne :

data["csp"].value_counts()
value_counts

On peut aussi prendre en compte les données manquantes et obtenir des probabilités (entre 0 et 1) plutôt que des valeurs. On utilisera alors :

value_counts_2
R

En R, il existe une fonction simple qui permet d'obtenir un tri à plat, il s'agit de table() (elle nous servira aussi pour le tri croisé). Vous pouvez aussi utiliser summary() qui pour une variable du type factor vous donnera la répartition des modalités avec les données manquantes. Finalement, le package questionr vous permet d'obtenir un tri à plat plus détaillé (avec les fréquences en pourcentage). Voici les codes utilisés :

table
freq

Faire un tri croisé avec R ou Python

python

Avec Python, nous utiliserons directement le package pandas pour effectuer des tris croisés sur des colonnes d'un DataFrame.

Les données qui nous intéressent sont dans la colonne csp et dans la colonne ville, nous allons donc faire un tri croisé sur ces colonnes afin d'obtenir un tableau de contingence. Nous pourrons utiliser deux approches :

La fonction pd.crosstab()
crosstab
La méthode .pivot_table()
pivot_table
R

Avec R, nous utiliserons aussi la fonction <code>table()</code> sur plusieurs colonnes

table function

Le package <code>gmodels</code> possède une fonction permettant d'aller plus loin pour l'analyse des tableaux croisés. Cette fonction est <code>Crosstable</code> et permet d'obtenir des résultats ressemblant à ceux de la <code>proc freq</code> de SAS.

library(gmodels)
CrossTable(data$csp, data$ville)
CrossTable
CrossTable2

Les données et le code

Les données utilisés ainsi que le code sont disponibles ci-dessous.

Découvrez nos formations Python et R

Partager cet article

Comments 3

  1. J’ai aimé, en fait je suis doctorant en cote d’ivoire. je suis biochimiste je voudrais plus de formation si possible.

  2. Bonjour,

    Nous aimerions réaliser une représentation graphique de notre tableau de contingence. Pouvez-vous nous expliquer comment réaliser la représentation graphique située au début de votre article svp ?
    Pouvons-nous également savoir comment elle se nomme ?

    En vous remerciant
    Bien cordialement
    Chloé Party

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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