Notions intervenant dans ce TP
suppression de colonnes avec
dropsur uneDataFramesuppression de colonnes entièrement vides (il n’y a pas de
dropna(axis=1)en polars)suppression de lignes entièrement vides avec
filteretpl.all_horizontalaccès aux informations sur la dataframe avec
schema,null_count,describeetglimpsevaleurs contenues dans une
Seriesavecuniqueetvalue_countsconversion d’une colonne en type numérique avec
castaccès et modification des chaînes de caractères contenues dans une colonne avec le namespace
strdes expressionsgénération de la liste Python des valeurs d’une série avec
to_list
0. install¶
installez
polarssi vous ne l’avez pas encore fait
hint
depuis le notebook vous pouvez lancer pip avec la magic %pip
# votre code1. import¶
importez la librairie
polars(sous le nompl, c’est l’usage)
# votre code2. read¶
lisez le fichier de données
data/objects-on-the-moon.csvaffichez sa taille et regardez quelques premières lignes
itables
# votre codeimport itables
itables.init_notebook_mode()3. drop¶
vous remarquez une première colonne franchement inutile
(c’est l’index d’une dataframe pandas, sauvée telle quelle avecto_csv)(optionnel) vérifiez que cette colonne contient bien les entiers
hintcomparez-la avec
pl.int_range(pl.len())utilisez la méthode
dropdes dataframes pour supprimer cette colonne de votre dataframe
# votre code4. info¶
il n’y a pas de méthode
infoen polars;
regardez le résultat deschema,null_count(),describe()etglimpse()remarquez une colonne entièrement vide
# votre code5. drop empty columns¶
supprimez de la dataframe les colonnes qui ont toutes leurs valeurs manquantes
(ici on s’interdit un code qui ferait explicitement référence à la colonne'Size')hintil n’y a pas d’équivalent de
dropna(how='all', axis=1)en polars;
mais on peut itérer sur les colonnes d’une dataframe (ce sont desSeries),
et uneSeriesa une méthodenull_count()vérifiez que vous avez bien enlevé la colonne
'Size'
# votre code6. drop empty rows¶
affichez la ligne en position 88, que remarquez-vous ?
(en polars c’est une position, pas un label d’index)supprimez de la dataframe les lignes qui ont toutes leurs valeurs manquantes
(et de nouveau sans faire référence à une ligne en particulier)hintpensez à
filter,pl.all()etpl.all_horizontal()
# votre code7. dtypes¶
utilisez l’attribut
dtypes(ouschema) des dataframes pour voir le type de vos colonnesque remarquez vous sur la colonne des masses ?
# votre code8. unique¶
utilisez la méthode
uniquedesSeriespour regarder le contenu de la colonne des massesque remarquez vous ?
# votre code9. cast¶
conservez la colonne
'Mass (lb)'d’origine
(par exemple dans une colonne de nom'Mass (lb) orig')hintdf.with_columns(<expression>.alias('nouveau nom'))utilisez la méthode
castdes expressions pour convertir la colonne'Mass (lb)'en flottant
en remplaçant les valeurs invalides par la valeur manquante (null)hintregardez le paramètre
strictdecast
c’est l’équivalent depd.to_numeric(..., errors='coerce')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)
et rangez le résultat dans une colonne'Mass (lb) clean'hintles expressions polars de type
Stringpossèdent un namespacestr
qui donne accès à des méthodes sur les chaînes (comme par exemplereplace_all)pl.col('Mass (lb) orig').strutilisez
castpour la convertir finalement en entier (pl.Int64)(optionnel) en pandas il fallait un type spécial (
pd.Int64Dtype)
pour avoir des entiers et des valeurs manquantes;
essayez de convertir la colonne'Mass (lb)'de la question 9 en entiers, que se passe-t-il ?
# 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 utilisantcast
# 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 la méthode
Series.arg_min()
(il n’y a pas deidxmin()puisqu’il n’y a pas d’index)y a-t-il plusieurs objets ex-aequo ?
# votre code15. memorial¶
y-a-t-il un Memorial sur la lune ?
hinten utilisant le namespace
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. to_list¶
faites la liste Python des objets sur la lune
hintvoyez la méthode
to_list()des séries
# votre code