HOWTO · Pandas
Comment obtenir le nombre de lignes d'un Pandas DataFrame
Découvrez comment compter les lignes d’un DataFrame Pandas avec shape, len() et son index, distinguer les lignes des colonnes et compter les lignes qui remplissent une condition.
Sur cette page
Pour obtenir le nombre de lignes d’un DataFrame Pandas, utilisez df.shape[0] ou len(df). L’attribut shape renvoie les deux dimensions : la première valeur correspond au nombre de lignes et la seconde au nombre de colonnes. Pour compter uniquement les lignes qui remplissent une condition, faites la somme d’un masque booléen.
Utiliser DataFrame.shape pour obtenir le nombre de lignes et de colonnes
DataFrame.shape est un attribut qui renvoie un tuple dans l’ordre (rows, columns). L’indice 0 donne le nombre de lignes et l’indice 1, le nombre de colonnes. Cette méthode est utile lorsque vous devez examiner les deux dimensions ou obtenir directement le nombre de lignes, sans compter les valeurs d’une colonne particulière.
L’exemple suivant crée un petit DataFrame et affiche ses deux dimensions :
import pandas as pd
data = {
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "Los Angeles", "Chicago"],
}
df = pd.DataFrame(data)
print("Rows:", df.shape[0])
print("Columns:", df.shape[1])
Pour obtenir uniquement le nombre de lignes, utilisez df.shape[0]. Évitez df.shape[1] pour cette tâche : cette expression renvoie le nombre de colonnes. Si un tableau comporte trois lignes et trois colonnes, les deux nombres seraient identiques et pourraient prêter à confusion.
Utiliser len() ou l’index pour obtenir le nombre de lignes
La fonction intégrée len() de Python renvoie le nombre de lignes lorsqu’elle reçoit un DataFrame : len(df). C’est une solution concise lorsque vous avez uniquement besoin du nombre de lignes. len(df.index) donne le même résultat en mesurant l’index des lignes du DataFrame, tandis que len(df.axes[0]) renvoie la longueur de l’axe des lignes. Pour obtenir le nombre de colonnes, len(df.axes[1]) correspond à df.shape[1].
Ces expressions comptent les lignes quels que soient les libellés de l’index ; elles ne comptent pas les valeurs non manquantes d’une colonne donnée. Pour compter les lignes qui ne contiennent aucune valeur manquante, filtrez d’abord les données avec df.dropna(), puis utilisez len(df.dropna()). Par défaut, dropna() supprime les lignes qui contiennent une valeur manquante dans n’importe quelle colonne. Passez subset=["Age"] pour ne tenir compte que d’une colonne particulière.
Il n’est pas nécessaire d’appeler .len() sur un DataFrame : len() est une fonction Python. Écrivez donc len(df) plutôt que df.len() ou .len(df.index). Comptez le DataFrame que vous souhaitez mesurer, par exemple le DataFrame filtré.
Compter les lignes qui remplissent une condition
Créez un masque booléen à partir d’une comparaison sur une colonne, puis appelez .sum() sur ce masque. Dans une Series booléenne, chaque valeur True compte pour un et chaque valeur False pour zéro ; leur somme donne donc le nombre de lignes correspondantes. Cette approche vectorisée convient à une comparaison simple et peut être étendue à plusieurs conditions.
import pandas as pd
df = pd.DataFrame({"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35]})
is_over_28 = df["Age"] > 28
matching_rows = is_over_28.sum()
print(matching_rows)
Pour combiner plusieurs comparaisons, placez chacune entre parenthèses et reliez-les avec & pour ET ou | pour OU. Par exemple, (df["Age"] > 28) & (df["Age"] < 35) sélectionne les lignes dont l’âge respecte les deux limites ; additionnez le masque obtenu pour en connaître le nombre. N’utilisez pas and ni or de Python entre des Series Pandas complètes.
Pour compter les lignes distinctes, supprimez les doublons avant de compter : len(df.drop_duplicates()). Cela répond à une question différente du décompte de toutes les lignes, car chaque enregistrement répété ne contribue qu’une fois après l’appel à drop_duplicates(). Choisissez l’expression selon que vous voulez compter toutes les lignes, celles qui correspondent à un filtre ou les enregistrements distincts.