Skip to content

Commit

Permalink
Restructure les titres (#374)
Browse files Browse the repository at this point in the history
* pandas

* Retour sur numpy

* pandas TP

* geopandas tp

* geopandas tutoorial

* webscraping

* regex

* API

* Dask
  • Loading branch information
linogaliana committed Jul 18, 2023
1 parent 93dcafc commit 130ed71
Show file tree
Hide file tree
Showing 9 changed files with 110 additions and 110 deletions.
4 changes: 2 additions & 2 deletions content/course/manipulation/01_numpy/index.qmd
@@ -1,6 +1,6 @@
---
title: "Retour sur numpy"
date: 2020-07-16T13:00:00Z
title: "Numpy, la brique de base de la data science"
date: 2023-07-10T13:00:00Z
draft: false
weight: 10
tags:
Expand Down
44 changes: 22 additions & 22 deletions content/course/manipulation/02a_pandas_tutorial/index.qmd
@@ -1,6 +1,6 @@
---
title: "Introduction à Pandas"
date: 2020-07-28T13:00:00Z
date: 2023-07-10T13:00:00Z
draft: false
weight: 20
tags:
Expand Down Expand Up @@ -133,7 +133,7 @@ est très utile

![Cheasheet pandas](https://cdn-images-1.medium.com/max/2000/1*YhTbz8b8Svi22wNVvqzneg.jpeg)

# Logique de pandas
## Logique de pandas

L'objet central dans la logique `pandas` est le `DataFrame`.
Il s'agit d'une structure particulière de données
Expand Down Expand Up @@ -214,7 +214,7 @@ fonction, de se poser la question de son implémentation native dans `numpy`, `p
En particulier, la plupart du temps, s'il existe une solution implémentée dans une librairie, il convient
de l'utiliser.

# Les Series
## Les Series

En fait, un DataFrame est une collection d'objets appelés `pandas.Series`.
Ces `Series` sont des objets d'une dimension qui sont des extensions des
Expand All @@ -240,7 +240,7 @@ est une liste finie et relativement courte, le type `category`.
Il faut bien examiner les types de son DataFrame, et convertir éventuellement
les types lors de l'étape de `data cleaning`.

## Indexation
### Indexation

La différence essentielle entre une `Series` et un objet `numpy` est l'indexation.
Dans `numpy`,
Expand Down Expand Up @@ -304,7 +304,7 @@ de se poser la question de l'ordre des lignes.
L'exemple dans la partie suivante permettra de s'en assurer.


## Valeurs manquantes
### Valeurs manquantes

Par défaut, les valeurs manquantes sont affichées `NaN` et sont de type `np.nan` (pour
les valeurs temporelles, i.e. de type `datatime64`, les valeurs manquantes sont
Expand Down Expand Up @@ -348,7 +348,7 @@ dans un DataFrame avec `dropna()` avec le paramètre `axis=1` (par défaut égal

Il est également possible de remplir les valeurs manquantes grâce à la méthode `fillna()`.

# Le DataFrame pandas
## Le DataFrame `Pandas`

Le `DataFrame` est l'objet central de la librairie `pandas`.
Il s'agit d'une collection de `pandas.Series` (colonnes) alignées par les index.
Expand Down Expand Up @@ -381,7 +381,7 @@ df.head()
```


## Les attributs et méthodes utiles
### Les attributs et méthodes utiles

Pour présenter les méthodes les plus pratiques pour l'analyse de données,
on peut partir de l'exemple des consommations de CO2 communales issues
Expand Down Expand Up @@ -648,7 +648,7 @@ df.isnull().sum()

On trouvera aussi la référence à `isna()` qui est la même méthode que `isnull()`.

# Graphiques rapides
## Graphiques rapides

Les méthodes par défaut de graphique
(approfondies dans la [partie visualisation](#visualisation))
Expand Down Expand Up @@ -692,9 +692,9 @@ possible (et même désirable car les graphiques `matplotlib`
sont, par défaut, assez rudimentaires), nous en verrons quelques exemples.


# Accéder à des éléments d'un DataFrame
## Accéder à des éléments d'un DataFrame

## Sélectionner des colonnes
### Sélectionner des colonnes

En SQL, effectuer des opérations sur les colonnes se fait avec la commande
`SELECT`. Avec `pandas`,
Expand All @@ -709,7 +709,7 @@ forme de `DataFrame` ou `dataframe['variable']` pour
la renvoyer sous forme de `Series`. Par exemple, `df[['Autres transports']]`
ou `df['Autres transports']`. C'est une manière préférable de procéder.

## Accéder à des lignes
### Accéder à des lignes

Pour accéder à une ou plusieurs valeurs d'un `DataFrame`,
il existe deux manières conseillées de procéder, selon la
Expand Down Expand Up @@ -753,7 +753,7 @@ df_example



# Principales manipulation de données
## Principales manipulation de données

L'objectif du [TP pandas](#pandasTP) est de se familiariser plus avec ces
commandes à travers l'exemple des données des émissions de C02.
Expand All @@ -773,7 +773,7 @@ des usages de manipulation des données
| Effectuer une opération par groupe | `GROUP BY` | `df.groupby('Commune').mean()` | `df %>% group_by(Commune) %>% summarise(m = mean)` | `df[,mean(Commune), by = Commune]` |
| Joindre deux bases de données (*inner join*) | `SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.x` | `table1.merge(table2, left_on = 'id', right_on = 'x')` | `table1 %>% inner_join(table2, by = c('id'='x'))` | `merge(table1, table2, by.x = 'id', by.y = 'x')` |

## Opérations sur les colonnes: `select`, `mutate`, `drop`
### Opérations sur les colonnes: `select`, `mutate`, `drop`

Les `DataFrames` pandas sont des objets *mutables* en langage `Python`,
c'est-à-dire qu'il est possible de faire évoluer le `DataFrame` au grès
Expand Down Expand Up @@ -867,7 +867,7 @@ Enfin, pour effacer des colonnes, on utilise la méthode `drop` avec l'argument
df_new = df_new.drop(columns = ["eneg", "agr"])
```

## Réordonner
### Réordonner

La méthode `sort_values` permet de réordonner un `DataFrame`. Par exemple,
si on désire classer par ordre décroissant de consommation de CO2 du secteur
Expand All @@ -881,7 +881,7 @@ Ainsi, en une ligne de code, on identifie les villes où le secteur
résidentiel consomme le plus.


## Filtrer
### Filtrer

L'opération de sélection de lignes s'appelle `FILTER` en SQL. Elle s'utilise
en fonction d'une condition logique (clause `WHERE`). On sélectionne les
Expand Down Expand Up @@ -929,7 +929,7 @@ En effet, contrairement à `df[mask]`, `df.loc[mask, :]` permet d'indiquer clair
Ce n'est pas le cas avec `df[mask]`.
D'ailleurs, lorsqu'on utilise la syntaxe `df[mask]`, `pandas` renvoie généralement un *warning*

## Opérations par groupe
### Opérations par groupe

En `SQL`, il est très simple de découper des données pour
effectuer des opérations sur des blocs cohérents et recollecter des résultats
Expand Down Expand Up @@ -1010,7 +1010,7 @@ df.loc[:, numeric_columns.tolist() + ["dep"] ].groupby('dep').agg(['min',"median
La première ligne est présente pour nous faciliter la récupération des noms de colonnes des variables
numériques

## Appliquer des fonctions
### Appliquer des fonctions

`pandas` est, comme on a pu le voir, un package très flexible, qui
propose une grande variété de méthodes optimisées. Cependant, il est fréquent
Expand Down Expand Up @@ -1072,7 +1072,7 @@ propose des solutions, par exemple les méthodes `isin` ou `digitize`, pour

En particulier, il faut noter que `apply` avec le paramètre `axis=1` est en générale lente.

## Joindre
### Joindre des données


Il est commun de devoir combiner des données issues de sources différentes.
Expand All @@ -1099,7 +1099,7 @@ En `Pandas`, dans la plupart des cas, on peut utiliser indifféremment `df.join`
Il est aussi possible de réaliser un merge en utilisant la fonction `pandas.concat()` avec `axis=1`.
Se référer à la documentation de `concat` pour voir les options possibles.

## Reshape
### Restructurer des données (_reshape_)

On présente généralement deux types de données:

Expand Down Expand Up @@ -1137,7 +1137,7 @@ print_badges("content/course/manipulation/02b_pandas_TP.qmd")
```
:::

## Les pipe
### Les pipe

En général, dans un projet, le nettoyage de données va consister en un ensemble de
méthodes appliquées à un `pandas.DataFrame`.
Expand All @@ -1155,7 +1155,7 @@ pratique lorsqu'on enchaine des opérations sur le même
_dataset_.


# Quelques enjeux de performance
## Quelques enjeux de performance

La librairie `Dask` intègre la structure de `numpy`, `pandas` et `sklearn`.
Elle a vocation à traiter de données en grande dimension, ainsi elle ne sera pas
Expand All @@ -1165,7 +1165,7 @@ Il s'agit d'une librairie construite sur la parallélisation.
Pour aller plus loin, se référer à la [documentation de `Dask`](https://docs.dask.org/en/latest/).


# Références
## Références

* Le site
[pandas.pydata](https://pandas.pydata.org/pandas-docs/stable/user_guide/basics.html)
Expand Down
8 changes: 4 additions & 4 deletions content/course/manipulation/02b_pandas_TP/index.qmd
@@ -1,6 +1,6 @@
---
title: "Pratique de pandas: un exemple complet"
date: 2022-11-01T13:00:00Z
date: 2023-07-01T13:00:00Z
draft: false
weight: 30
tags:
Expand Down Expand Up @@ -439,7 +439,7 @@ df_copy2 = df_copy2.reset_index()
# Le temps d'exécution est plus lent sur la base sans index par département.
```

# Restructurer les données
## Restructurer les données

On présente généralement deux types de données :

Expand Down Expand Up @@ -584,7 +584,7 @@ df_wide_agg.rank(axis = 1)
df_wide_agg.rank(axis = 1).median().nlargest(10)
```

# Combiner les données
## Combiner les données

Une information que l'on cherche à obtenir s'obtient de moins en moins à partir d'une unique base de données. Il devient commun de devoir combiner des données issues de sources différentes. Nous allons ici nous focaliser sur le cas le plus favorable qui est la situation où une information permet d'apparier de manière exacte deux bases de données (autrement nous serions dans une situation, beaucoup plus complexe, d'appariement flou). La situation typique est l'appariement entre deux sources de données selon un identifiant individuel ou un identifiant de code commune, ce qui est notre cas.

Expand Down Expand Up @@ -662,7 +662,7 @@ plt.savefig("featured.png")



# Exercices bonus
## Exercices bonus

Les plus rapides d'entre vous sont invités à aller un peu plus loin en s'entraînant avec des exercices bonus qui proviennent du [site de Xavier Dupré](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx3). 3 notebooks en lien avec `numpy` et `pandas` vous y sont proposés :

Expand Down
18 changes: 9 additions & 9 deletions content/course/manipulation/03_geopandas_TP/index.qmd
@@ -1,6 +1,6 @@
---
title: "Pratique de geopandas avec les données vélib"
date: 2020-07-09T13:00:00Z
date: 2023-07-09T13:00:00Z
draft: false
weight: 50
slug: geopandasTP
Expand Down Expand Up @@ -72,7 +72,7 @@ import geopandas as gpd
```


# Lire et enrichir des données spatiales
## Lire et enrichir des données spatiales

Dans cette partie,
nous utiliserons
Expand Down Expand Up @@ -240,7 +240,7 @@ ax = data_paris.plot(alpha = 0.3, edgecolor = "k")
ax.set_axis_off()
```

# Utiliser des données géographiques comme des couches graphiques
## Utiliser des données géographiques comme des couches graphiques

Souvent, le découpage communal ne sert qu'en fond de cartes, pour donner des
repères. En complément de celui-ci, on peut désirer exploiter
Expand Down Expand Up @@ -359,7 +359,7 @@ ctx.add_basemap(base, source=ctx.providers.Stamen.Watercolor)



# Jointures spatiales
## Jointures spatiales

Les jointures attributaires fonctionnent comme avec un DataFrame `pandas`.
Pour conserver un objet spatial *in fine*, il faut faire attention à utiliser en premier (base de gauche) l'objet `GeoPandas`.
Expand Down Expand Up @@ -492,9 +492,9 @@ fig = ax.get_figure()
fig.savefig("featured.png")
```

# Trouver les toilettes publiques les plus proches
## Trouver les toilettes publiques les plus proches

## Objectif
### Objectif

Jusqu'à présent, nous nous sommes familiarisés avec
la manipulation de données spatiales et la représentation
Expand Down Expand Up @@ -535,7 +535,7 @@ Néanmoins, à mesure que `GeoPandas` se développe, il
devient de moins en moins nécessaire d'utiliser directement
`Shapely`.

## Mise en application
### Mise en application

Nous allons rechercher les toilettes publiques les
plus proches de chaque station.
Expand Down Expand Up @@ -621,7 +621,7 @@ moins dans Paris intra-muros, vous n'avez pas
à systématiquement marcher (ou rouler) autant.


# Exercices supplémentaires {#exo-supp}
## Exercices supplémentaires {#exo-supp}

Voici une fonction pour télécharger et dézipper
facilement un fonds de carte issu de `data.gouv`
Expand Down Expand Up @@ -749,7 +749,7 @@ data_paris.tail(2)



## Jointures spatiales
### Jointures spatiales

L'objectif de cet exercice est de ne conserver que les
lignes de transports à l'intérieur de Paris intra-muros.
Expand Down

0 comments on commit 130ed71

Please sign in to comment.