Exemple de comment éditer les éléments d'une colonne ou une condition est vérifiée avec pandas en python:
1 -- Créer une simple dataframe avec pandas
Pour créer une simple dataframe avec 5 colonnes et 20 lignes on peut faire comme ceci:
>>> import pandas as pd
>>> import numpy as np
>>> data = np.arange(1,101)
>>> data = data.reshape(20,5)
>>> df = pd.DataFrame(data=data,columns=['a','b','c','d','e'])
ce qui donne
>>> df
a b c d e
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
5 26 27 28 29 30
6 31 32 33 34 35
7 36 37 38 39 40
8 41 42 43 44 45
9 46 47 48 49 50
10 51 52 53 54 55
11 56 57 58 59 60
12 61 62 63 64 65
13 66 67 68 69 70
14 71 72 73 74 75
15 76 77 78 79 80
16 81 82 83 84 85
17 86 87 88 89 90
18 91 92 93 94 95
19 96 97 98 99 100
2 -- Sélectionner une colonne
Pour sélectionner par exemple la colonne b le plus simple est de faire comme ceci:
>>> df['b']
0 2
1 7
2 12
3 17
4 22
5 27
6 32
7 37
8 42
9 47
10 52
11 57
12 62
13 67
14 72
15 77
16 82
17 87
18 92
19 97
Name: b, dtype: int64
ou
>>> df.loc[:,'b']
0 2
1 7
2 12
3 17
4 22
5 27
6 32
7 37
8 42
9 47
10 52
11 57
12 62
13 67
14 72
15 77
16 82
17 87
18 92
19 97
Name: b, dtype: int64
Dans le cas ou la colonne n'a pas de nom on peut aussi utiliser iloc():
>>> df.iloc[:,1]
0 2
1 7
2 12
3 17
4 22
5 27
6 32
7 37
8 42
9 47
10 52
11 57
12 62
13 67
14 72
15 77
16 82
17 87
18 92
19 97
Pour éditer (multiplier par 10 par exemple) tous les elements de la colonne b on peut donc faire comme ici:
>>> df['b'] = df['b'] * 10
>>> df
a b c d e
0 1 20 3 4 5
1 6 70 8 9 10
2 11 120 13 14 15
3 16 170 18 19 20
4 21 220 23 24 25
5 26 270 28 29 30
6 31 320 33 34 35
7 36 370 38 39 40
8 41 420 43 44 45
9 46 470 48 49 50
10 51 520 53 54 55
11 56 570 58 59 60
12 61 620 63 64 65
13 66 670 68 69 70
14 71 720 73 74 75
15 76 770 78 79 80
16 81 820 83 84 85
17 86 870 88 89 90
18 91 920 93 94 95
19 96 970 98 99 100
3 -- Sélectionner uniquement les éléments ou une condition est vérifiée
Pour modifier uniquement les éléments de la colonne b avec valeur supérieure à 500
>>> df['b'][ df['b'] > 500 ] = df['b'][ df['b'] > 500 ] / 10
>>> df
a b c d e
0 1 20 3 4 5
1 6 70 8 9 10
2 11 120 13 14 15
3 16 170 18 19 20
4 21 220 23 24 25
5 26 270 28 29 30
6 31 320 33 34 35
7 36 370 38 39 40
8 41 420 43 44 45
9 46 470 48 49 50
10 51 52 53 54 55
11 56 57 58 59 60
12 61 62 63 64 65
13 66 67 68 69 70
14 71 72 73 74 75
15 76 77 78 79 80
16 81 82 83 84 85
17 86 87 88 89 90
18 91 92 93 94 95
19 96 97 98 99 100
Note: attention de ne pas oublier de specifier le nom de la colonne :
>>> df[ df['b'] > 500 ] = df[ df['b'] > 500 ] / 10
>>> df
a b c d e
0 1.0 20.0 3.0 4.0 5.0
1 6.0 70.0 8.0 9.0 10.0
2 11.0 120.0 13.0 14.0 15.0
3 16.0 170.0 18.0 19.0 20.0
4 21.0 220.0 23.0 24.0 25.0
5 26.0 270.0 28.0 29.0 30.0
6 31.0 320.0 33.0 34.0 35.0
7 36.0 370.0 38.0 39.0 40.0
8 41.0 420.0 43.0 44.0 45.0
9 46.0 470.0 48.0 49.0 50.0
10 5.1 52.0 5.3 5.4 5.5
11 5.6 57.0 5.8 5.9 6.0
12 6.1 62.0 6.3 6.4 6.5
13 6.6 67.0 6.8 6.9 7.0
14 7.1 72.0 7.3 7.4 7.5
15 7.6 77.0 7.8 7.9 8.0
16 8.1 82.0 8.3 8.4 8.5
17 8.6 87.0 8.8 8.9 9.0
18 9.1 92.0 9.3 9.4 9.5
19 9.6 97.0 9.8 9.9 10.0
4 -- Sélectionner uniquement les éléments avec plusieurs conditions
Sélectionner les éléments plus grands que 12 et plus petits que 40 dans la colonne b:
>>> df['b'][ (df['b'] > 12) & (df['b'] < 40) ]
3 17
4 22
5 27
6 32
7 37
Editer ces éléments en ajoutant 5:
>>> df['b'][ (df['b'] > 12) & (df['b'] < 40) ] = df['b'][ (df['b'] > 12) & (df['b'] < 40) ] + 5
>>> df
a b c d e
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 22 18 19 20
4 21 27 23 24 25
5 26 32 28 29 30
6 31 37 33 34 35
7 36 42 38 39 40
8 41 42 43 44 45
9 46 47 48 49 50
10 51 52 53 54 55
11 56 57 58 59 60
12 61 62 63 64 65
13 66 67 68 69 70
14 71 72 73 74 75
15 76 77 78 79 80
16 81 82 83 84 85
17 86 87 88 89 90
18 91 92 93 94 95
19 96 97 98 99 100