Skip to content

pandas : Récupérer les n premières/dernières lignes d’un DataFrame avec head(), tail(), slice

Pour vérifier les données de pandas.DataFrame et pandas.Series avec de nombreuses lignes, les méthodes head() et tail() qui renvoient les n premières et dernières lignes sont utiles.

Cet article décrit le contenu suivant.

  • Obtenez les n premières lignes de DataFrame :head()
  • Obtenez les n dernières lignes de DataFrame :tail()
  • Obtenir des lignes en spécifiant les numéros de ligne : slice
  • Obtenir les valeurs de la première/dernière ligne

Notez qu’une autre méthode que vous pouvez utiliser pour vérifier les pandas.DataFrame et pandas.Series de grande taille est sample() pour un échantillonnage aléatoire.

À titre d’exemple, utilisez l’ensemble de données d’iris inclus comme échantillon dans seaborn.

import pandas as pd
import seaborn as sns

df = sns.load_dataset("iris")
print(df.shape)
# (150, 5)

L’exemple suivant concerne pandas.DataFrame, mais pandas.Series a également head() et tail(). L’utilisation est la même pour les deux.

Obtenez les n premières lignes de DataFrame :head()

La méthode head() renvoie les n premières lignes.

Par défaut, les 5 premières lignes sont renvoyées.

print(df.head())
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa
# 3           4.6          3.1           1.5          0.2  setosa
# 4           5.0          3.6           1.4          0.2  setosa

Vous pouvez spécifier le nombre de lignes.

print(df.head(3))
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa

Obtenez les n dernières lignes de DataFrame :tail()

La méthode tail() renvoie les n dernières lignes.

Par défaut, les 5 dernières lignes sont renvoyées.

print(df.tail())
#      sepal_length  sepal_width  petal_length  petal_width    species
# 145           6.7          3.0           5.2          2.3  virginica
# 146           6.3          2.5           5.0          1.9  virginica
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

Vous pouvez spécifier le nombre de lignes.

print(df.tail(3))
#      sepal_length  sepal_width  petal_length  petal_width    species
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

Obtenir des lignes en spécifiant les numéros de ligne : slice

Il est également possible d’obtenir des lignes en utilisant slice.

print(df[50:55])
#     sepal_length  sepal_width  petal_length  petal_width     species
# 50           7.0          3.2           4.7          1.4  versicolor
# 51           6.4          3.2           4.5          1.5  versicolor
# 52           6.9          3.1           4.9          1.5  versicolor
# 53           5.5          2.3           4.0          1.3  versicolor
# 54           6.5          2.8           4.6          1.5  versicolor

Vous pouvez utiliser des tranches pour faire la même chose que head() et tail().

print(df[:5])
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa
# 3           4.6          3.1           1.5          0.2  setosa
# 4           5.0          3.6           1.4          0.2  setosa

print(df[-5:])
#      sepal_length  sepal_width  petal_length  petal_width    species
# 145           6.7          3.0           5.2          2.3  virginica
# 146           6.3          2.5           5.0          1.9  virginica
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

Obtenir les valeurs de la première/dernière ligne

Si vous spécifiez n=1 dans head() ou tail(), vous pouvez obtenir la première ou la dernière ligne, mais même s’il n’y a qu’une seule ligne, le type est pandas.DataFrame.

print(df.head(1))
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa

print(type(df.head(1)))
# <class 'pandas.core.frame.DataFrame'>

Si vous spécifiez une seule ligne à l’aide d’iloc, vous pouvez obtenir la ligne en tant que pandas.Series. pandas.Series est plus facile d’obtenir la valeur. Vous pouvez obtenir la première ligne avec iloc[0] et la dernière ligne avec iloc[-1].

Si vous voulez obtenir la valeur de l’élément, vous pouvez le faire avec iloc[0][‘column_name’], iloc[-1][‘column_name’].

print(df.iloc[0])
# sepal_length       5.1
# sepal_width        3.5
# petal_length       1.4
# petal_width        0.2
# species         setosa
# Name: 0, dtype: object

print(type(df.iloc[0]))
# <class 'pandas.core.series.Series'>

print(df.iloc[0]['sepal_length'])
# 5.1
print(df.iloc[-1])
# sepal_length          5.9
# sepal_width             3
# petal_length          5.1
# petal_width           1.8
# species         virginica
# Name: 149, dtype: object

print(type(df.iloc[-1]))
# <class 'pandas.core.series.Series'>

print(df.iloc[-1]['sepal_length'])
# 5.9

Notez qu’une erreur est générée sans .iloc.

# print(df[0])
# KeyError: 0

# print(df[-1])
# KeyError: -1

Pour plus d’informations sur at, iat, loc, iloc et la sélection de lignes et de colonnes en indexant [], consultez l’article suivant.