Notions intervenant dans ce TP
affichage des données par
plottri de
pandas.DataFramepar ligne, par colonne et par index
N’oubliez pas d’utiliser le help en cas de problème.
tri et affichage¶
1. import¶
importez les librairies numpy et pandas
# votre code2. import (2)¶
importez la librairie matplotlib.pyplot avec le nom plt
# votre code3. read¶
lors de la lecture du fichier de données data/titanic.csv:
gardez uniquement les colonnes
colssuivantes'PassengerId','Survived','Pclass','Name','Sex','Age'et'Fare'mettez la colonne
PassengerIdcomme index des lignesbesoin d’aide ? faites
pd.read_csv?
# votre code4. plot¶
en utilisant la méthode df.plot():
plottez la dataframe (pas la série) réduite à la colonne des ages
utilisez le paramètre de
style'rv'(rpour rouge etvpour le style: points triangulaires)
vous allez voir les points en vrac; dans la suite on va s’efforcer de les trier, pour mieux voir la distribution des âges dans la population concernée
# votre code5. sort¶
pour commencer on va trier - i.e. mettre les lignes de la dataframe suivant l’ordre d’une colonne
en utilisant la méthode df.sort_values():
créez une nouvelle dataframe dont les lignes sont triées
dans l’ordre croissant des'Age'des passagerspour constater qu’elles sont triées, affichez les 4 premières lignes de la dataframe
la colonne desAgeest triée
les lignes ont changé de place dans la tableremarquez que l’indexation a été naturellement conservée
# votre code6. plot¶
plottez la colonne des ages de la dataframe triée
pour changer un peu on va mettre un style'b.'Que constatez-vous ?
# votre code7. untangle¶
la logique de df.plot() consiste
à utiliser comme abscisses l’index de la dataframe
et accessoirement à faire autant de plots que de colonnes - ici on n’en a qu’une
vous tracez donc le point puis le point ...
alors que vous voudriez tracer le point puis le point ...
c’est à dire: le fait d’utiliser le ‘PassengerId’ n’est pas bon, on voudrait que les abscisses soient les indices de lignes
une solution: voyez la méthode
reset_index()qui permet de transformer l’index en une colonne normaleutiliser cette méthode et regardez ce que vous avez dans l’index ensuite
plottez le résultat
normalement à ce stade vous obtenez la visualisation qu’on cherche
# votre codetri des lignes selon plusieurs critères¶
quand on trie, que faire en cas d’égalité ?
en général on choisit plusieurs critères, on trie selon le premier, puis en cas d’égalité selon le second, etc..
note: on appelle cela un ordre lexicographique, car c’est - un peu - comme dans un dictionnaire
1. rechargez la dataframe¶
# votre code2. sort¶
utilisez df.sort_values() pour trier la dataframe suivant la colonne ('Pclass')
et trier les lignes identiques (passagers de même classe) suivant la colonne ('Age')
# votre code3. select¶
sélectionnez, dans la nouvelle dataframe, la sous-dataframe des gens dont les ages ne sont pas définis
hint
utiliser la méthode isna() sur une série, pour créer un masque de booléens, et appliquer ce masque à la dataframe
# votre code4. missing ages¶
combien nous manque-t-il d’ages ?
# votre code5. scattered¶
où sont placés ces passagers dans la data-frame globale triée ?
en début (voir avec
head)ou en fin (voir avec
tail)ou c’est plus compliqué que ça ?
hint
la façon standard d’afficher un dataframe consiste à montrer le début et la fin
il y a des situations, comme celle-ci, où on veut avoir une vision globale des données,
et pour cela une approche consiste à se ramener à un tableau numpy
pour cela voyez par exemple df.no_numpy()
# votre code6. untangle¶
trouvez le paramètre de sort_values()
qui permet de mettre ces lignes en début de dataframe lors du tri
# votre code7. sort again¶
produire une nouvelle dataframe en ne gardant que les ages connus, et triée selon les ages, puis les prix de billet
tri d’une dataframe selon l’index¶
reprenez la dataframe du Titanic, en choisissant toujours comme index PassengerId
et triez-là selon les index
hint
voyez df.sort_index()
# votre code