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 pdimport randoml1 = [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 Year0 63 9 20181 97 29 20182 1 92 20193 75 38 20204 19 50 20195 20 71 20196 59 60 20207 93 46 20198 6 17 20209 87 82 201810 36 12 202011 89 71 201812 87 69 201913 98 21 201814 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 Year0 63 9 20181 97 29 20189 87 82 201811 89 71 201813 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 pprintpp = pprint.PrettyPrinter(indent=4)pp.pprint(df_sliced_dict)
donne
{ 2018: Column A Column B Year0 63 9 20181 97 29 20189 87 82 201811 89 71 201813 98 21 2018,2019: Column A Column B Year2 1 92 20194 19 50 20195 20 71 20197 93 46 201912 87 69 2019,2020: Column A Column B Year3 75 38 20206 59 60 20208 6 17 202010 36 12 202014 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 Year0 63 9 20181 97 29 20189 87 82 201811 89 71 201813 98 21 2018
