Skip to article frontmatterSkip to article content

Notions intervenant dans ce TP

N’oubliez pas d’utiliser le help en cas de problème.

tri et affichage

1. import

importez les librairies numpy et pandas

# votre code

2. import (2)

importez la librairie matplotlib.pyplot avec le nom plt

# votre code

3. read

lors de la lecture du fichier de données data/titanic.csv:

  1. gardez uniquement les colonnes cols suivantes 'PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age' et 'Fare'

  2. mettez la colonne PassengerId comme index des lignes

  3. besoin d’aide ? faites pd.read_csv?

# votre code

4. plot

en utilisant la méthode df.plot():

  1. plottez la dataframe (pas la série) réduite à la colonne des ages

  2. utilisez le paramètre de style 'rv' (r pour rouge et v pour 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 code

5. 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():

  1. créez une nouvelle dataframe dont les lignes sont triées
    dans l’ordre croissant des 'Age' des passagers

  2. pour constater qu’elles sont triées, affichez les 4 premières lignes de la dataframe
    la colonne des Age est triée
    les lignes ont changé de place dans la table

  3. remarquez que l’indexation a été naturellement conservée

# votre code

6. plot

  1. plottez la colonne des ages de la dataframe triée
    pour changer un peu on va mettre un style 'b.'

  2. Que constatez-vous ?

# votre code

7. untangle

la logique de df.plot() consiste

vous tracez donc le point (804,0.42)(804, 0.42) puis le point (756,0.67)(756, 0.67) ...
alors que vous voudriez tracer le point (0,0.42)(0, 0.42) puis le point (1,0.67)(1, 0.67) ...
c’est à dire: le fait d’utiliser le ‘PassengerId’ n’est pas bon, on voudrait que les abscisses soient les indices de lignes

  1. une solution: voyez la méthode reset_index() qui permet de transformer l’index en une colonne normale

  2. utiliser cette méthode et regardez ce que vous avez dans l’index ensuite

  3. plottez le résultat

normalement à ce stade vous obtenez la visualisation qu’on cherche

# votre code

tri 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 code

2. 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 code

3. select

sélectionnez, dans la nouvelle dataframe, la sous-dataframe des gens dont les ages ne sont pas définis

# votre code

4. missing ages

combien nous manque-t-il d’ages ?

# votre code

5. scattered

où sont placés ces passagers dans la data-frame globale triée ?

# votre code

6. untangle

trouvez le paramètre de sort_values()
qui permet de mettre ces lignes en début de dataframe lors du tri

# votre code

7. 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

# votre code