print(df.groupby('year')('lifeExp').mean())
year
1952 49.057620
1957 51.507401
1962 53.609249
1967 55.678290
1972 57.647386
1977 59.570157
1982 61.533197
1987 63.212613
1992 64.160338
1997 65.014676
2002 65.694923
2007 67.007423
Cela nous donne l’espérance de vie moyenne de toutes les populations, par année. Nous pourrions effectuer les mêmes types de calculs pour la population et le PIB par année :
print(df.groupby('year')('pop').mean())
print(df.groupby('year')('gdpPercap').mean())
Jusqu’ici, tout va bien. Mais que se passe-t-il si nous souhaitons regrouper nos données sur plusieurs colonnes ? Nous pouvons le faire en passant des colonnes dans des listes :
print(df.groupby(('year', 'continent'))
(('lifeExp', 'gdpPercap')).mean())
lifeExp gdpPercap
year continent
1952 Africa 39.135500 1252.572466
Americas 53.279840 4079.062552
Asia 46.314394 5195.484004
Europe 64.408500 5661.057435
Oceania 69.255000 10298.085650
1957 Africa 41.266346 1385.236062
Americas 55.960280 4616.043733
Asia 49.318544 5787.732940
Europe 66.703067 6963.012816
Oceania 70.295000 11598.522455
1962 Africa 43.319442 1598.078825
Americas 58.398760 4901.541870
Asia 51.563223 5729.369625
Europe 68.539233 8365.486814
Oceania 71.085000 12696.452430
Ce .groupby() L’opération prend nos données et les regroupe d’abord par année, puis par continent. Ensuite, il génère des valeurs moyennes à partir des colonnes espérance de vie et PIB. De cette façon, vous pouvez créer des groupes dans vos données et classer la manière dont elles doivent être présentées et calculées.
Si vous souhaitez « aplatir » les résultats dans un seul cadre indexé de manière incrémentielle, vous pouvez utiliser l’option .reset_index() méthode sur les résultats :
gb = df.groupby(('year', 'continent'))
(('lifeExp', 'gdpPercap')).mean()
flat = gb.reset_index()
print(flat.head())
| year continent lifeExp gdpPercap
| 0 1952 Africa 39.135500 1252.572466
| 1 1952 Americas 53.279840 4079.062552
| 2 1952 Asia 46.314394 5195.484004
| 3 1952 Europe 64.408500 5661.057435
| 4 1952 Oceana 69.255000 10298.085650
Nombre de fréquences groupées
Une autre chose que nous faisons souvent avec les données est de calculer fréquences. Le nunique et value_counts les méthodes peuvent être utilisées pour obtenir des valeurs uniques dans une série et leurs fréquences. Par exemple, voici comment savoir combien de pays nous avons sur chaque continent :
print(df.groupby('continent')('country').nunique())
continent
Africa 52
Americas 25
Asia 33
Europe 30
Oceana 2
Traçage de base avec Pandas et Matplotlib
La plupart du temps, lorsque vous souhaitez visualiser des données, vous utiliserez une autre bibliothèque telle que Matplotlib pour générer ces graphiques. Cependant, vous pouvez utiliser Matplotlib directement (avec d’autres bibliothèques de traçage) pour générer des visualisations à partir de Pandas.
Pour utiliser la simple extension Matplotlib pour Pandas, assurez-vous d’abord d’avoir installé Matplotlib avec pip install matplotlib.
Examinons maintenant à nouveau l’espérance de vie annuelle de la population mondiale :
global_yearly_life_expectancy = df.groupby('year')('lifeExp').mean()
print(global_yearly_life_expectancy)
| year
| 1952 49.057620
| 1957 51.507401
| 1962 53.609249
| 1967 55.678290
| 1972 57.647386
| 1977 59.570157
| 1982 61.533197
| 1987 63.212613
| 1992 64.160338
| 1997 65.014676
| 2002 65.694923
| 2007 67.007423
| Name: lifeExp, dtype: float64
Pour créer un tracé de base à partir de ceci, utilisez :
import matplotlib.pyplot as plt
global_yearly_life_expectancy = df.groupby('year')('lifeExp').mean()
c = global_yearly_life_expectancy.plot().get_figure()
plt.savefig("output.png")
Le tracé sera enregistré dans un fichier dans le répertoire de travail actuel sous le nom output.png. Les axes et autres marquages sur le tracé peuvent tous être définis manuellement, mais pour des exportations rapides, cette méthode fonctionne très bien.
Conclusion
Python et Pandas offrent de nombreuses fonctionnalités que vous ne pouvez pas obtenir à partir des feuilles de calcul. D’une part, ils vous permettent d’automatiser votre travail avec des données et de rendre les résultats reproductibles. Plutôt que d’écrire des macros de feuille de calcul, qui sont lourdes et limitées, vous pouvez utiliser Pandas pour analyser, segmenter et transformer des données, et utiliser la puissance expressive et l’écosystème de packages de Python (par exemple, pour représenter graphiquement ou restituer des données dans d’autres formats) pour faire encore plus que ce que vous pourriez faire avec Pandas seul.
