Notions intervenant dans ce TP
suppression de colonnes avec
dropsur uneDataFramesuppression de colonne entièrement vide avec
dropnasur uneDataFrameaccès aux informations sur la dataframe avec
infovaleur contenues dans une
Seriesavecuniqueetvalue_countsconversion d’une colonne en type numérique avec
to_numericetastypeaccès et modification des chaînes de caractères contenues dans une colonne avec l’accesseur
strdesSeriesgénération de la liste Python des valeurs d’une série avec
tolist
pensez à l’aide en ligne (rappels)
vous avez plein de moyens pour obtenir de l’aide; notamment dans ipython ou jupyter:
pensez à utiliser la complétion avec Tab
utiliser ‘Shift-Tab’ pour voir l’aide de la fonction que vous venez de taper - genre pour voir les paramètres attendus
on peut aussi faire par exemple
pd.DataFrame.drop?pour obtenir de l’aide, mais il faut valider la cellule, c’est souvent moins pratique queShift-Tab
il y a aussi la méthode old-school qui consiste à appeler help(une_fonction), qui fonctionne dans Python de base - mais en pratique c’est sous-optimal
1. import¶
importez les librairies
pandasetnumpy
# votre code2. read¶
lisez le fichier de données
data/objects-on-the-moon.csvaffichez sa taille et regardez quelques premières lignes
# votre code3. drop¶
vous remarquez une première colonne franchement inutile
utiliser la méthodedropdes dataframes pour supprimer cette colonne de votre dataframe
# votre code4. info¶
appelez la méthode
infodes dataframes (non-nullsignifienon-nani.e. non manquant)remarquez une colonne entièrement vide
# votre code5. dropna¶
utilisez la méthode
dropnades dataframes pour supprimer en place les colonnes qui ont toutes leurs valeurs manquantes
(ici on s’interdit un code qui ferait explicitement référence à la colonne'Size')vérifiez que vous avez bien enlevé la colonne
'Size'
# votre code6. dropna (2)¶
affichez la ligne d’
index88, que remarquez-vous ?utilisez la méthode
dropnades dataframes pour supprimer en place les lignes qui ont toutes leurs valeurs manquantes (et de nouveau sans faire référence à une ligne en particulier)
# votre code7. dtypes¶
utilisez l’attribut
dtypesdes dataframes pour voir le type de vos colonnesque remarquez vous sur la colonne des masses ?
# votre code8. unique¶
utilisez la méthode
uniquedesSeriespour en regarder le contenu de la colonne des massesque remarquez vous ?
# votre code9. to_numeric¶
conservez la colonne
'Mass (lb)'d’origine
(par exemple dans une colonne de nom'Mass (lb) orig')utilisez la fonction
pd.to_numericpour convertir la colonne'Mass (lb)'en numérique
en remplaçant les valeurs invalides par la valeur manquante (NaN)naturellement vous vérifiez votre travail en affichant le type de la série
df['Mass (lb)']combien y a-t-il de données manquantes dans cette colonne ?
# votre code10. replace¶
cette solution ne vous satisfait pas, vous ne voulez perdre aucune valeur
(même au prix de valeurs approchées)vous décidez vaillamment de modifier les
stren leur enlevant les caractères<et>
afin de pouvoir en faire des entiers
remplacez les<et les>par des ‘’ (chaîne vide)hintles
pandas.Seriesformées de chaînes de caractères sont du typepandasobject
mais elle possèdent un accesseurstrqui permet de leur appliquer les méthodes python desstr
(comme par exemplereplace)df['Mass (lb) orig'].strutilisez la méthode
astypedesSeriespour la convertir finalement enint(optionnel) pour les avancés: sauriez-vous convertir la série en entiers tout en conservant les
nan?hintcherchez
pandas.Int64Dtype
# votre code11. convert¶
sachant que
1 kg = 2.205 lb
créez une nouvelle colonne'Mass (kg)'en convertissant les lb en kg
arrondissez les flottants en entiers en utilisantastype
# votre code12. countries¶
Quels sont les pays qui ont laissé des objets sur la lune ?
Combien en ont-ils laissé en pourcentage (pas en nombre) ?
hintregardez les paramètres de
value_counts
# votre code13. total¶
quel est le poids total des objets sur la lune en kg ?
quel est le poids total des objets laissés par les
United States?
# votre code14. blame¶
quel pays a laissé l’objet le plus léger ?
hintvoyez les méthodes
Series.idxmin()etSeries.argmin()
# votre code15. memorial¶
y-a-t-il un Memorial sur la lune ?
hinten utilisant l’accesseur
strde la colonne'Artificial object'
regardez si une des descriptions contient le terme'Memorial'quel est le pays qui a mis ce mémorial ?
# votre code16. tolist¶
faites la liste Python des objets sur la lune
hintvoyez la méthode
tolist()des séries
# votre code