Exemple de comment décomposer (diviser) une dataframe en fonction des valeurs d'une colonne donnée avec pandas en python
Créer une dataframe avec pandas
Créons d'abord une dataframe
import pandas as pd
import random
l1 = [random.randint(1,100) for i in range(15)]
l2 = [random.randint(1,100) for i in range(15)]
l3 = [random.randint(2018,2020) for i in range(15)]
data = {'Column A':l1,'Column B':l2,'Year':l3}
df = pd.DataFrame(data)
print(df)
donne
Column A Column B Year
0 63 9 2018
1 97 29 2018
2 1 92 2019
3 75 38 2020
4 19 50 2019
5 20 71 2019
6 59 60 2020
7 93 46 2019
8 6 17 2020
9 87 82 2018
10 36 12 2020
11 89 71 2018
12 87 69 2019
13 98 21 2018
14 82 67 2020
Nous voulons découper cette dataframe en fonction de la colonne "year".
Rechercher des valeurs uniques dans une colonne donnée
Pour trouver les valeurs uniques dans une colonne donnée
df['Year'].unique()
donne ici:
array([2018, 2019, 2020])
Extraire les lignes pour une valeur donnée dans une colonne
Pour extraire les lignes pour une valeur donnee dans une colonne
df[ df['Year'] == 2018 ]
donne
Column A Column B Year
0 63 9 2018
1 97 29 2018
9 87 82 2018
11 89 71 2018
13 98 21 2018
Décomposer une dataframe en fonction des valeurs d'une colonne
Maintenant, nous pouvons découper le dataframe d'origine et utiliser un dictionnaire pour stocker les résultats:
df_sliced_dict = {}
for year in df['Year'].unique():
df_sliced_dict[year] = df[ df['Year'] == year ]
alors
import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(df_sliced_dict)
donne
{ 2018: Column A Column B Year
0 63 9 2018
1 97 29 2018
9 87 82 2018
11 89 71 2018
13 98 21 2018,
2019: Column A Column B Year
2 1 92 2019
4 19 50 2019
5 20 71 2019
7 93 46 2019
12 87 69 2019,
2020: Column A Column B Year
3 75 38 2020
6 59 60 2020
8 6 17 2020
10 36 12 2020
14 82 67 2020}
Pour obtenir la dataframe pour une année donnée à partir du dictionnaire:
df_sliced_dict[2018]
donne
Column A Column B Year
0 63 9 2018
1 97 29 2018
9 87 82 2018
11 89 71 2018
13 98 21 2018