Premières manipulations avec Pandas
1 Exercice : premières manipulations de Series
- Construire la Series suivante :
- Modifier la valeur de
value
à 10 pour l’élément en position 3. - Afficher les éléments avec
value
supérieur à 5. - Modifier la valeur de
value
à 0 pour les éléments avec unvalue
inférieur à 5. - Ajouter un élément avec un
value
de 3.5 à la Serie. - Modifier les indices de la Serie pour qu’ils soient des lettres de l’alphabet.
# creation et affichage de la serie
# s = pd.Series([12, -4, 7, 9])
s = pd.Series(data=[12, -4, 7, 9])
s
0 12
1 -4
2 7
3 9
dtype: int64
0 True
1 False
2 True
3 True
dtype: bool
0 12
2 7
3 10
dtype: int64
0 12
1 0
2 7
3 10
dtype: int64
# ajout d'une valeur à la serie (plus precisement, concatenantion de deux series dont une contenant une seule valeur)
L = pd.Series([3.5])
# s = pd.concat( [s,L] ) # PB !!!! deux fois le même index
s = pd.concat( [s,L] , ignore_index=True)
s
0 12.0
1 0.0
2 7.0
3 10.0
4 3.5
dtype: float64
a 12.0
b 0.0
c 7.0
d 10.0
e 3.5
dtype: float64
2 Exercice : premières manipulations de DataFrame
- Construire le DataFrame suivant :
- Afficher les lignes correspondant aux objets dont le prix est supérieur ou égale à 1.
- Modifier le prix de l’objet “eraser” pour le passer à 0.2.
La construction du DataFrame peut se faire en deux étapes. D’abord, on crée un dictionnaire avec les données, puis on crée le DataFrame à partir de ce dictionnaire.
import pandas as pd
# un dictionaire de listes, chaque liste representant une colonne
data = {'color' : ['red', 'green', 'blue', 'yellow', 'black'],
'object' : ['pen', 'pencil', 'marker', 'eraser', 'ruler'],
'price' : [1.2, 0.6, 1.0, 0.7, 1.5]}
df = pd.DataFrame(data)
df
color | object | price | |
---|---|---|---|
0 | red | pen | 1.2 |
1 | green | pencil | 0.6 |
2 | blue | marker | 1.0 |
3 | yellow | eraser | 0.7 |
4 | black | ruler | 1.5 |
On va séléctionner les lignes du DataFrame en utilisant un masque :
# pour comprendre
df['price'] > 1.0
# Dans la sortie on voit l'indice de la ligne et un booléen qui indique si la condition est vraie ou fausse pour cette ligne
0 True
1 False
2 False
3 False
4 True
Name: price, dtype: bool
On va modifier la valeur d’une cellule : avec .loc
on peut accéder à une cellule en utilisant les indices de la ligne et de la colonne. Pour trouver l’indice de la ligne correspondant à l’objet “eraser”, on peut utiliser un masque.
color | object | price | |
---|---|---|---|
0 | red | pen | 1.2 |
1 | green | pencil | 0.6 |
2 | blue | marker | 1.0 |
3 | yellow | eraser | 0.2 |
4 | black | ruler | 1.5 |
Pour comprendre:
3 Exercice : dict de dict en DataFrame
Transformer en dataframe le dictionnaire de dictionnaires suivant:
Une autre forme courante de données est un dictionnaire qui contient plusieurs autres dictionnaires. Si le dictionnaire priciapl est passé au DataFrame, pandas interprétera les clés du dictionnaire extérieur comme étant les colonnes, et les clés intérieures comme étant les indices des lignes :
import pandas as pd
pop = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio' : {2000: 1.5, 2001: 1.7, 2002: 3.6}}
pd.DataFrame(data=pop)
Nevada | Ohio | |
---|---|---|
2001 | 2.4 | 1.7 |
2002 | 2.9 | 3.6 |
2000 | NaN | 1.5 |