Skip to content

pandas: Ottenere le prime/ultime n righe di DataFrame con head(), tail(), slice

Python

Per controllare i dati di pandas.DataFrame e pandas.Series con molte righe, sono utili i metodi head() e tail() che restituiscono la prima e l’ultima n righe.

In questo articolo vengono descritti i seguenti contenuti.

  • Ottieni le prime n righe di DataFrame:head()
  • Ottieni le ultime n righe di DataFrame:tail()
  • Ottieni righe specificando i numeri di riga: slice
  • Ottieni i valori della prima/ultima riga

Nota che un altro metodo che puoi utilizzare per controllare pandas.DataFrame e pandas.Series di grandi dimensioni è sample() per il campionamento casuale.

Ad esempio, utilizzare il set di dati dell’iride incluso come campione in Seaborn.

import pandas as pd
import seaborn as sns

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

L’esempio seguente è per pandas.DataFrame, ma pandas.Series ha anche head() e tail(). L’utilizzo è lo stesso per entrambi.

Ottieni le prime n righe di DataFrame:head()

Il metodo head() restituisce le prime n righe.

Per impostazione predefinita, vengono restituite le prime 5 righe.

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

È possibile specificare il numero di righe.

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

Ottieni le ultime n righe di DataFrame:tail()

Il metodo tail() fornisce le ultime n righe.

Per impostazione predefinita, vengono restituite le ultime 5 righe.

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

È possibile specificare il numero di righe.

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

Ottieni righe specificando i numeri di riga: slice

È anche possibile ottenere righe usando 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

Puoi usare le fette per fare la stessa cosa di head() e 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

Ottieni i valori della prima/ultima riga

Se specifichi n=1 in head() o tail(), puoi ottenere la prima o l’ultima riga, ma anche se solo una riga, il tipo è 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'>

Se specifichi solo una riga usando iloc, puoi ottenere la riga come pandas.Series. pandas.Series è più facile ottenere il valore. Puoi ottenere la prima riga con iloc[0] e l’ultima riga con iloc[-1].

Se vuoi ottenere il valore dell’elemento, puoi farlo con 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

Si noti che viene generato un errore senza .iloc.

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

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

Per ulteriori informazioni su at, iat, loc, iloc e sulla selezione di righe e colonne via l’indicizzazione [], vedere l’articolo seguente.