Formation Python Pour La Data Science - 3 - Introduction À Numpy
Formation Python Pour La Data Science - 3 - Introduction À Numpy
la data science
Numpy et pandas
1
Introduction à numpy
2
NUMPY : présentation
5
NumPy et les arrays
Attention les arrays
On peut générer des arrays de manière simple en Python sont
np.array([ ], dtype=float) toujours indexés à 0
7
Premières opérations arithmétiques
Les opérations arithmétiques de bases se font terme à terme
*, +, -, /, **
8
Attention lorsqu’on sélectionne et
modifie des sous-parties d’un array,
10
Opérations matricielles sur les arrays
11
Les fonctions universelles sur les arrays
On utilise :
np.save(‘mon_array’,mon_array) pour sauver un array
np.load(‘mon_array.npy’) pour charger un array
np.savez(‘ziparray.npz’, x=mon_array, y=mpn_array2)
sauvegarder en zip plusieurs arrays
np.savetxt(‘textfile.txt’, mon_array, delimiter=‘;’) pour
sauvegarder un array dans un fichier texte
np.loadtxt(‘textfile.txt’, delimiter=‘;’) pour charger un array
depuis un fichier texte
Générer une matrice simple et
sauvegarder cette matrice dans array.npy
14
puis dans array.txt
Introduction à pandas
15
Un nouvel objet : series
Les Series sont indexées, c’est leur avantage sur les arrays de NumPy
On peut utiliser les fonctions .values et .index pour voir les différentes parties de chaque
Series
On définit une Series par Series([,], index=[‘’,’’,])
On peut appeler un élément avec ma_serie[‘France’]
On peut aussi faire des conditions :
ma_serie[ma_serie>5000000]
‘France’ in ma_serie
Les objets Series peuvent être transformés en dictionnaires en utilisant :
.to_dict()
Définir un objet Series comprenant la
population de 5 pays puis afficher les pays 16
17
Les dates avec pandas
Les DataFrame sont des objets très souples pouvant être construits de
différentes façon
On peut les construire en récupérant des données copier / coller, où
directement sur Internet, ou en entrant les valeurs manuellement
Les DataFrame se rapprochent des dictionnaires et on peut construire
ces objets en utilisant DataFrame(dico)
De nombreux détails sur la création des DataFrame se trouve sur ce site
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html
Construire un dictionnaire avec des
produits et des prix puis afficher le
DataFrame obtenu en transformant
20 ce
dictionnaire
Opérations simples sur les DataFrame
Récupérez les données de Wikipédia sur
les résultats de NBA et obtenir les
Affichage du nom des colonnes : .columns statistiques descriptives pour les variables
On peut afficher une seule colonne avec mon_frame[‘nom_colonne’] quantitatives.
On peut utiliser mon_frame.nom_colonne dans certaines On utilisera plutôt Chrome ou Firefox pour
conditions ce type de tâches (éviter IE)
On peut afficher une seule ligne avec mon_frame.iloc[3]
On peut supprimer une colonne
del mon_frame[‘nom colonne’]
import webbrowser
url=‘https://en.wikipedia.org/wiki/List_of_all-time_NBA_win-loss_records'
webbrowser.open(url)
#puis
pd.read_clipboard() 21
L’indexation et la réindexation
Avec les objets pandas, l’indexation est simplifiée
Pour afficher les libellés des lignes, on utilise .index
Les index ne peuvent pas être modifié comme les autres
valeurs
Pour modifier les indices, on utilise la fonction
.reindex([])
Cette fonction permet aussi de remplir les nouvelles valeurs avec
l’option fill_value=0
On peut aussi remplir des valeurs à partir de celles présentes en
utilisant method=‘ffill’
22
L’indexation sur les dataframes à 2 dimensions
Sur un DataFrame à deux dimensions, on peut réindexer
les colonnes et les lignes :
Pour les lignes, on utilise .reindex()
Pour les colonnes, on utilise .reindex(columns= )
Construire un objet DataFrame à 2
On peut le faire simultanément en utilisant .iloc[
liste_des_lignes, liste_des_colonnes ] dimensions avec des labels pour les lignes
et pour les colonnes.
Pour supprimer des éléments, on peut utiliser : Ajouter une colonne en réindexant les
.drop(‘nom_index’) ou .drop(no. index) pour une ligne colonnes puis supprimer cette colonne.
entière
Finalement, afficher les valeurs plus
.drop(‘nom_index, axis=1) pour une colonne entière grandes que 4.
Pour sélectionner des éléments, on utilise :
[‘nom_index’] ou [no. index] ou [condition] pour
sélectionner par colonne
.iloc[‘nom_index’] ou .iloc[no. index] pour sélectionner
par ligne
23
Combiner des dataframes
24
Les tris
25
Les statistiques simples
On définit une valeur manquante en
utilisant np.nan
.sum(axis=0) permet de faire une somme par colonne
.sum(axis=1) permet de faire une somme par ligne
.min() et .max() donnent le minimum par colonne
.idxmin() et .idxmax() donnent l’index du minimum et du
maximum
.describe() affiche un tableau de statistiques descriptives par
colonne
.corr() pour calculer la corrélation entre les colonnes
Obtenir les différentes statistiques 26
descriptives pour les données NBA.
Le traitement des données manquantes
27
Index multiples (aller plus loin)
28
Importer des données externes
Importez le fichier demo_ventes.csv
depuis Python dans frame_ventes.
Importer : Exporter :
Cas des .csv : pd.read_csv() On utilise
Par défaut, la première colonne est le .to_csv(‘nom_du_fichier.csv’)
nom des variables On peut faire varier sep= et
On peut utiliser header=None columns= pour sélectionner
quelques colonnes
Autre méthode :
pd.read_table(‘nom_du_fichie
r.csv’, sep=‘,’)
Pour en savoir plus :
https://docs.python.org/2/library/cs
v.html
Pour extraire uniquement les n
premières lignes, on ajoute
nrows=n
29
D’autres types de données
HTML aussi.
On utilise pd.io.html.read_html(url) et on doit installer les bibliothèques
beautifulsoup et html5lib
On prend le premier élément de l’objet obtenu que l’on met dans un DataFrame :
dframe_list[0]
Importez un tableau en html depuis la page
http://www.fdic.gov/bank/individual/failed/banklist.html
30
Importer depuis Excel
31
importer et exporter depuis des bases de
données
Pandas possède une fonction read_sql() qui permet d’importer
directement des bases de données ou des queries dans des
DataFrame
Il faut tout de même un connecteur pour accéder aux bases de
données
read_sql_table(table_name, con[, schema, ...]) Read SQL database table into a DataFrame.
read_sql(sql, con[, index_col, ...]) Read SQL query or database table into a DataFrame.
DataFrame.to_sql(name, con[, flavor, ...]) Write records stored in a DataFrame to a SQL database.
32
Bases de données SQL
Les jointures
On veut joindre des jeux de données en utilisant des clés (variables communes)
pd.merge permet de joindre deux DataFrame, on utilise comme options
on=‘key’
On peut utiliser comme option how=, on peut avoir left dans ce cas, on garde
le jeu de données à gauche et pour les données de droite des valeurs
manquantes sont ajoutées. Si on utilise outer, on gardera toutes les valeurs
des deux jeux de données
On peut avoir plusieurs clés et faire une jointure sur les deux clés
on=[‘key1’,’key2’] avec l’option how=‘outer’
Pour plus de détails : http://pandas.pydata.org/pandas- Joindre les deux dataframes de
docs/dev/generated/pandas.DataFrame.merge.html ventes en utilisant l’id.
34
Modifier des jeux de données
Jusqu’ici on a utilisé des clés pour joindre des jeux de données, on peut aussi utiliser des
index
On utilise toujours pd.merge avec comme option right_index=True pour utiliser l’indice
pour le DataFrame de droite. On peut faire la même chose pour le DataFrame de gauche
Concaténer :
Avec NumPy : on crée des arrays et on utilise np.concatenate(, axis = 1). Ceci va permettre d’ajouter
des colonnes et d’obtenir une plus grande matrice. Si on prend axis=0, on ajoutera des lignes
Avec pandas : on crée des Series et on utilise pd.concat(), on choisit aussi axis= et si on utilise 1,
alors les Series sont transformées en DataFrame. On peut aussi ignorer les index afin d’éviter les
répétitions d’index en utilisant ignore_index=True
Pour plus de détails : http://padas.pydata.org/pandas-docs/stable/generated/pandas.concat.html
37
Autres actions sur les données
Mapping :
Le mapping permet, entre autres, d’identifier des entrées d’un jeu de données afin
d’ajouter une nouvelle variable qui correspond à ces éléments
Par exemple, si on a une colonne avec des noms de villes, on pourra créer un dictionnaire
associant un pays à chaque ville et en utilisant la fonction .map(), on obtiendra une
nouvelle colonne
dframe[‘pays'] = dframe[‘ville'].map(dico_pays)
Remplacer :
.replace(valeur, valeur_remplacement) Créez un DataFrame avec comme
On peut utiliser des listes ou des dictionnaires variables 4 villes de différents pays
et leur population. Créez un
Renommer des index : dictionnaire associant chaque ville à
.rename(index=, columns=) un pays. Ajoutez une colonne pays à
votre DataFrame en utilisant
38
.map().
Discrétiser
39
L’utilisation de GroupBy sur des DataFrame
40
Exemple complet
- On peut utiliser la fonction .agg() avec par exemple ‘mean’ comme paramètre
41
L’évaluation d’expressions