Dans pandas, les méthodes 𝐡𝐞𝐚𝐝() et 𝐭𝐚𝐢𝐥() sont utilisées pour obtenir les 𝐧 première et dernière lignes d’un D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 , ainsi que les 𝐧 premier et dernier éléments d’un S𝐞𝐫𝐢𝐞𝐬 .
Une autre méthode utile pour examiner les données dans de grands D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 ou S𝐞𝐫𝐢𝐞𝐬 est 𝐬𝐚𝐦𝐩𝐥𝐞() , qui échantillonne des lignes ou des colonnes de manière aléatoire.
La version pandas utilisée dans cet article est la suivante. Notez que les fonctionnalités peuvent varier selon les versions. Le D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 suivant avec 10 lignes est utilisé comme exemple.
import pandas as pd print(pd.__version__) # 2.1.4 df = pd.DataFrame({'col_0': list('ABCDEFGHIJ'), 'col_1': range(9, -1, -1)}, index=[f'row_{i}' for i in range(10)]) print(df) # col_0 col_1 # row_0 A 9 # row_1 B 8 # row_2 C 7 # row_3 D 6 # row_4 E 5 # row_5 F 4 # row_6 G 3 # row_7 H 2 # row_8 I 1 # row_9 J 0
Les exemples suivants utilisent D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 , mais S𝐞𝐫𝐢𝐞𝐬 prend également en charge les méthodes 𝐡𝐞𝐚𝐝() et 𝐭𝐚𝐢𝐥() de la même manière.
Obtenez les 𝐧 premières lignes : 𝐡𝐞𝐚𝐝()
La méthode 𝐡𝐞𝐚𝐝() renvoie les 𝐧 premières lignes.
- pandas.DataFrame.head — documentation de pandas 2.1.4
- pandas.Series.head — Documentation de pandas 2.1.4
Par défaut, les 5 premières lignes sont renvoyées.
print(df.head()) # col_0 col_1 # row_0 A 9 # row_1 B 8 # row_2 C 7 # row_3 D 6 # row_4 E 5
Vous pouvez préciser le nombre de lignes comme premier argument, 𝐧 .
print(df.head(3)) # col_0 col_1 # row_0 A 9 # row_1 B 8 # row_2 C 7
Obtenez les 𝐧 dernières lignes : 𝐭𝐚𝐢𝐥()
La méthode 𝐭𝐚𝐢𝐥() renvoie les 𝐧 dernières lignes.
- pandas.DataFrame.tail — documentation de pandas 2.1.4
- pandas.Series.tail — documentation de pandas 2.1.4
Par défaut, les 5 dernières lignes sont renvoyées.
print(df.tail()) # col_0 col_1 # row_5 F 4 # row_6 G 3 # row_7 H 2 # row_8 I 1 # row_9 J 0
Vous pouvez préciser le nombre de lignes comme premier argument, 𝐧 .
print(df.tail(3)) # col_0 col_1 # row_7 H 2 # row_8 I 1 # row_9 J 0
Obtention des lignes en spécifiant les numéros de ligne : slice
Vous pouvez obtenir des lignes à n’importe quelle position en spécifiant les numéros de ligne avec des tranches.
print(df[3:6]) # col_0 col_1 # row_3 D 6 # row_4 E 5 # row_5 F 4
Il est également possible d’effectuer des opérations similaires à 𝐡𝐞𝐚𝐝() et 𝐭𝐚𝐢𝐥() en utilisant des tranches.
print(df[:5]) # col_0 col_1 # row_0 A 9 # row_1 B 8 # row_2 C 7 # row_3 D 6 # row_4 E 5 print(df[-5:]) # col_0 col_1 # row_5 F 4 # row_6 G 3 # row_7 H 2 # row_8 I 1 # row_9 J 0
Obtenir la première/dernière ligne et ses valeurs
Passer 1 à 𝐡𝐞𝐚𝐝() ou 𝐭𝐚𝐢𝐥() renvoie respectivement la première ou la dernière ligne. Cependant, il est important de noter que même une seule ligne est renvoyée sous la forme d’un D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 .
print(df.head(1)) # col_0 col_1 # row_0 A 9 print(type(df.head(1))) # <class 'pandas.core.frame.DataFrame'>
Utilisez 𝐢𝐥𝐨𝐜 pour obtenir une seule ligne sous la forme d’un S𝐞𝐫𝐢𝐞𝐬 : 𝐢𝐥𝐨𝐜[0] pour la première ligne et 𝐢𝐥𝐨𝐜[-1] pour la dernière ligne. Pour récupérer une valeur spécifique, utilisez 𝐢𝐥𝐨𝐜[0][‘𝐜𝐨𝐥𝐮𝐦𝐧_𝐧𝐚𝐦𝐞’] ou .. . . . . .
print(df.iloc[0]) # col_0 A # col_1 9 # Name: row_0, dtype: object print(type(df.iloc[0])) # <class 'pandas.core.series.Series'> print(df.iloc[0]['col_0']) # A
print(df.iloc[-1]) # col_0 J # col_1 0 # Name: row_9, dtype: object print(type(df.iloc[-1])) # <class 'pandas.core.series.Series'> print(df.iloc[-1]['col_0']) # J
Notez que lors de l’attribution de valeurs à l’aide de l’approche ci-dessus, un S𝐞𝐭𝐭𝐢𝐧𝐠W𝐢𝐭𝐡 C𝐨𝐩𝐲W𝐚𝐫𝐧𝐢𝐧𝐠 peut se produire.
df.iloc[0]['col_0'] = 'AAA' # /var/folders/rf/b7l8_vgj5mdgvghn_326rn_c0000gn/T/ipykernel_48384/183824280.py:1: SettingWithCopyWarning: # A value is trying to be set on a copy of a slice from a DataFrame
Pour éviter le S𝐞𝐭𝐭𝐢𝐧𝐠W𝐢𝐭𝐡 C𝐨𝐩𝐲W𝐚𝐫𝐧𝐢𝐧𝐠 , récupérez le nom de la première/dernière ligne à partir de l’attribut 𝐢𝐧𝐝𝐞𝐱 et spécifiquez-le dans 𝐚𝐭 . 𝐥𝐨𝐜 peut également être utilisé, mais 𝐚𝐭 est plus rapide pour récupérer et attribuer une valeur unique.
df.at[df.index[0], 'col_0'] = 'AAA' df.at[df.index[-1], 'col_0'] = 'JJJ' print(df) # col_0 col_1 # row_0 AAA 9 # row_1 B 8 # row_2 C 7 # row_3 D 6 # row_4 E 5 # row_5 F 4 # row_6 G 3 # row_7 H 2 # row_8 I 1 # row_9 JJJ 0
Pour plus de détails sur 𝐚𝐭 , 𝐢𝐚𝐭 , 𝐥𝐨𝐜 et 𝐢𝐥𝐨𝐜 , reportez-vous à l’article suivant.
