42 lines
3.1 KiB
Markdown
42 lines
3.1 KiB
Markdown
# Exercice de traitement de données avec Pandas
|
||
|
||
Tiré du site de Guillaume Dueymes : https://www.guillaumedueymes.com/courses/formation_python/8-pandas-exercice/
|
||
|
||
Nous allons analyser un data set contenant des informations sur 10 000 paires de chaussures vendues sur le site Amazon,
|
||
avec de nombreuse caractéristiques comme le prix minimal, le prix maximal, les couleurs disponibles, les tailles disponibles, leurs poids, la marque…
|
||
Le fichier est fourni compressé sous le nom `womens-shoes.csv.xz` (511 ko compressé, 65,1 Mo décompressé)
|
||
|
||
---
|
||
|
||
## Découverte du data set
|
||
|
||
1. À l’aide de la fonction `pandas.read_csv()`, importez entièrement le data set et enregistrez-le dans une variable `shoes`.
|
||
2. Utilisez la méthode `.head()` pour afficher les premières lignes du `DataFrame`.
|
||
3. Il y a plus de 4 colonnes, beaucoup ne sont pas visibles. Afin de toutes les voir lors de l'affichage, utilisez la fonction `pandas.set_option()` pour que `.head()` affiche toutes les colonnes du `DataFrame`. (consultez la documentation de `set_option()`)
|
||
4. On va garder uniquement les colonnes intéressantes. Grâce à la syntaxe de filtrage par colonnes, créez une variable `shoes_light`, comprenant uniquement les colonnes suivantes : `id`, `name`, `dateUpdated`, `colors`, `prices.amountMax`, `prices.amountMin` et `prices.merchant`. Affichez le `head()` de `shoes_light`.
|
||
|
||
---
|
||
|
||
## Data Cleaning
|
||
|
||
1. À l'aide de l'attribut `.dtypes` du dataframe, regardez attentivement les types de chaque colonne. Certaines ont un type qui n'est pas celui attendu. Lesquelles ?
|
||
2. À l'aide des méthodes `.isnull()` (ou `.isna()`), `.sum()` et `len()`, calculez pour chaque colonne le pourcentage de valeurs non renseignées. Notez quelque part celles qui ont un non remplissage supérieur à 10%.
|
||
3. Supprimez du dataframe `shoes_light` les colonnes que vous avez notées dans la question précédente, elles ont trop de valeurs non renseignées.
|
||
4. À l'aide de la méthode `.to_datetime()` du dataframe, convertissez le type de la colonne `dateUpdated`.
|
||
|
||
---
|
||
|
||
## Features Modeling
|
||
|
||
1. Ajoutez au dataframe une nouvelle colonne `prices.amountAverage` calculant la moyenne des colonnes `prices.amountMax` et `prices.amountMin` (via une addition et une division par 2).
|
||
2. Grâce à l'attribut `Series.dt.weekday`, ajoutez au dataframe une nouvelle colonne `dayOfweekUpdated`, extrayant depuis la colonne `dateUpdated` le jour de la semaine où les produits sont mis à jour (un nombre entre 0 et 6).
|
||
|
||
---
|
||
|
||
## Data Analyse
|
||
|
||
1. Affichez le prix moyen, écart type, etc. des chaussures avec la méthode `.describe()`.
|
||
2. Y a-t-il de grandes différences de prix en fonction de la marque ? À l'aide des méthodes `groupby()`, `mean()` et `sort_values()`, créez une variable `luxury` contenant les 10 marques les plus chères, puis une variable `low_cost` contenant les 10 marques les moins chères.
|
||
3. Grâce à la méthode `value_counts()`, déterminez le jour de la semaine où les produits sont le plus souvent mis à jour.
|
||
4. **(Optionnel)** Donnez le prix moyen des produits de la marque `easy street` mis à jour un jeudi (jour 3).
|