135 lines
4.2 KiB
Markdown
135 lines
4.2 KiB
Markdown
---
|
||
title: Pandas
|
||
author: Steve Kossouho
|
||
---
|
||
|
||
# Concepts de base de Pandas
|
||
|
||
----
|
||
|
||
## La bibliothèque Pandas
|
||
|
||
Il existe d'assez nombreuses bibliothèques Python destinées à faciliter le traitement de données.
|
||
Bien que la bascule prenne du temps, de plus en plus de développeurs et d'entreprises optent pour
|
||
inclure ces bibliothèques dans leur flux de travail, bien souvent en remplacement de solutions
|
||
payantes telles que **SAS**, **Stata** ou **MatLab**.
|
||
|
||
Parmi ces bibliothèques, on compte notamment `pyspark` (`Apache Spark`), `pandas`, `polars`
|
||
ou encore `dask`.
|
||
|
||
`pandas`, la plus connue d'entre elles, est une bibliothèque assez intuitive, destinée à des
|
||
développeurs, et pensée pour des développeurs qui sont déjà habitués à traiter de la donnée
|
||
dans des logiciels propriétaires.
|
||
|
||
{width=96px}
|
||
|
||
----
|
||
|
||
### Installer `pandas`
|
||
|
||
Pour bénéficier de la meilleure expérience avec Pandas, vous pouvez l'installer avec l'outil `pip` :
|
||
|
||
```bash {.numberLines}
|
||
# Pandas-stubs offre l'autocomplétion sur des éléments dynamiques
|
||
# Openpyxl permet à pandas de charger des documents Excel 2003- et 2007+
|
||
pip install pandas pandas-stubs openpyxl
|
||
```
|
||
|
||
----
|
||
|
||
## Types de base de Pandas
|
||
|
||
Toute l'utilisation de la bibliothèque `Pandas` tourne autour de 3 classes principales permettant de manipuler des données en 1D ou en 2D.
|
||
|
||
- `Series` : Séries de données (1 dimension)
|
||
- `DataFrame` : Tableaux de données (2 dimensions)
|
||
- `Index` : Séries de données identifiant des colonnes ou lignes
|
||
|
||
[Guide utilisateur Pandas]
|
||
|
||
----
|
||
|
||
### Les objets `Series`
|
||
|
||
La classe `Series` est la plus simple à manipuler. Elle stocke et permet de gérer les données d'un tableau à une dimension.
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
series = pd.Series([0, 1, 1, 2, 3, 5, 8, 13, 21])
|
||
```
|
||
|
||
[pandas.Series]
|
||
|
||
----
|
||
|
||
### Les objets `DataFrame`
|
||
|
||
La classe `DataFrame` permet de stocker et de manipuler des données dans un tableau à deux dimensions. Cette classe est séparée de la classe `Series`, au moins parce que les objets `DataFrame` possèdent deux index, au lieu d'un seul pour une `Series` (nous allons le découvrir plus tard).
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
dataframe = pd.DataFrame(data=[["Paul", 1974], ["Quentin", 1991], ["Aude", 1987]])
|
||
```
|
||
|
||
[pandas.DataFrame]
|
||
|
||
----
|
||
|
||
### Les objets `Index`
|
||
|
||
La classe `Index` est similaire à un objet de la classe `Series`. C'est une séquence de valeurs, qui est utilisée par Pandas pour étiqueter des colonnes d'un `DataFrame`, ou des enregistrements d'une `Series` ou d'un `DataFrame`. Tout objet `Series` ou `DataFrame` possède toujours un index par axe.
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
index = pd.Index(data=[1, 2, 3])
|
||
```
|
||
|
||
[pandas.Index]
|
||
|
||
----
|
||
|
||
### Alternatif : Les objets `MultiIndex`
|
||
|
||
Un objet `MultiIndex` est un `Index` dont les étiquettes sont composées sur plusieurs niveaux. Cela permet d'extraire des lignes ou des colonnes hiérarchiquement.
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
index = pd.MultiIndex.from_tuples([("FR", "Paris"), ("FR", "Pau"), ("ES", "Madrid"), ("ES", "Sevilla")])
|
||
series = pd.Series(data=[1, 2, 3, 4], index=index)
|
||
print(series.loc["FR"])
|
||
```
|
||
|
||
[Indexation avancée]
|
||
|
||
----
|
||
|
||
### Alternatif : Les objets `DatetimeIndex`
|
||
|
||
Un objet `DatetimeIndex` est un `Index` contenant des objets de type date, et dont le contenu est générable de façon déterministe. Ils contiennent généralement des dates à intervalles réguliers, ou des dates suivant des règles simples (ex. tous les 4 mercredi, toutes les fins de mois etc.)
|
||
|
||
[Indexation avancée]
|
||
|
||
|
||
----
|
||
|
||
### Structure d'une `Series`
|
||
|
||

|
||
|
||
----
|
||
|
||
### Structure d'un `DataFrame`
|
||
|
||

|
||
|
||
[Guide utilisateur Pandas]: https://pandas.pydata.org/docs/user_guide/index.html#user-guide Pandas user guide
|
||
[pandas.Series]: https://pandas.pydata.org/docs/reference/series.html
|
||
[pandas.DataFrame]: https://pandas.pydata.org/docs/reference/frame.html
|
||
[pandas.Index]: https://pandas.pydata.org/docs/reference/indexing.html
|
||
[pandas.MultiIndex]: https://pandas.pydata.org/docs/user_guide/advanced.html
|
||
[Indexation avancée]: https://pandas.pydata.org/docs/user_guide/advanced.html
|