Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Découvrir la data science avec Python

Importer un fichier CSV dans pandas

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Votre formateur vous invite ici à utiliser les options de la méthode read_csv de pandas pour importer correctement le fichier CSV.
08:32

Transcription

Voyons maintenant comment on peut importer des données dans iPython ou dans votre environnement en utilisant Pandas. Donc on se souvient que j'ai sur mon disque D: dans data, eh bien, j'ai sauvegardé quelques fichiers mais j'ai toujours mon fichier "production2015.csv", j'ai ajouté quelque chose que j'ai récupéré aussi sur la plate-forme open data du gouvernement qui est les stocks à la production et au commerce du vin en 2014 et 2015. Et, comme vous le voyez, il s'agit d'une feuille de calcul Excel. Alors on va s'occuper de ça après, mais, on va déjà voir comment on peut importer les données de production 2015. Alors, vous vous souvenez à quoi elles ressemblent. Département, déclarants, séparés par des points-virgules. La première ligne est une ligne d'en-tête. Et donc on va utiliser des méthodes de Pandas pour importer ce fichier. J'ai toujours mon namespace Pandas avec son alias pd. Et puis, j'ai des méthodes qui s'appellent read, alors si on regarde la liste de mes méthodes, j'ai tout ce qu'il faut. Je peux faire un read_clipboard, csv c'est ce que je vais utiliser, mais je peux lire depuis Excel directement, et dans Pandas vous avez des méthodes qui permettent de travailler directement avec Excel. On peut lire différent types de fichiers. Du HTML, du JSON, du SQL, et puis, du Stata, etc. on peut faire des requêtes sur SQL, des tables sur SQL complètes. Donc on a vraiment une grande richesse qui permet d'importer et d'exporter des données pour pouvoir les travailler avec Pandas dans un environnement comme iPython. On va voir ce que nous donne le read_csv simple. Déjà je vais regarder où je suis, d'ailleurs. Très bien. Au bon endroit. Donc, je reprends mon read_csv et je vais lui passer en paramètre simplement le nom de mon fichier et puis on va voir les différents paramètres, donc "production 2015, CSV" Vous voyez que, en fait, c'est soit une série, mais c'est plutôt un dataframe puisqu'on a ici une colonne et un index, on pourrait dire c'est l'équivalent d'une série, d'ailleurs, puisque c'est simplement un tableau à une dimension avec un indexeur et qu'une valeur. Vous avez noté que Pandas n'a pas nativement compris la séparation par le point-virgule, donc il va falloir que je lui indique ça. Et donc, vous vous souvenez peut-être que dans Numpai, on avait le delimiter. Ici on va utiliser plutôt l'option séparateur et on va dire « ben mon séparateur, c'est le point-virgule ». Voilà qui est déjà mieux. Et donc, j'ai maintenant l'indexeur, le département et les déclarants, c'est pas mal du tout. Vous avez noté aussi quelque chose. Nativement, Pandas a détecté que la première ligne n'était pas une ligne de données mais une ligne d'en-têtes. C'est donc l'option par défaut. Vous pouvez dire quelle est la ligne de header si vous voulez en le spécifiant dans les paramètres en disant header et vous mettez le numéro de la ligne. Si je fais quelque chose de débile, comme ceci, eh bien, ça n'a pas beaucoup de sens mais il a pris la deuxième ligne comme header, la ligne position 1 à partir d'une base 0, bien sûr. Donc, par défaut, Pandas considère le header à zéro. Vous n'avez pas de header, spécifiez "none", n, o, n, e en paramètre pour dire « ben voilà y'a pas de header et on va s'en passer. » La plupart des paramètres de cette méthode et beaucoup de paramètres dans Pandas peuvent être comme ici un entier, mais aussi différentes choses. Et puis Pandas va réagir dynamiquement. Ici ça peut être un entier, ça peut-être aussi une liste d'entiers qui vont faire que on va pouvoir indiquer plusieurs lignes d'en-têtes, ce qui va générer un multi-indexing, et vous avez beaucoup d'autres paramètres où on peut mettre un entier ou bien des informations sous forme de texte, donc on n'est pas vraiment typés sur les paramètres, il va y avoir une gestion en interne assez dynamique du paramètre et on peut passer des informations riches à travers ces paramètres. On y est presque. Mais il y a encore quelque chose qui me gêne, c'est l'indexeur. Ici, j'ai le département. Mais il n'a pas été choisi comme l'indexeur. Donc je vais lui indiquer quelle est la colonne en faisant ceci, index_col, quelle est la colonne qui va être choisie comme indexeur, et ça va être la colonne 0 de ma source. Et voilà qui est fait. "Département" maintenant, est l'indexeur. Une note sur ce chargement, c'est les performances. Si vous chargez dans Numpai, la même chose, eh bien vous vous apercevrez, si votre volume est important, et souvent, bien entendu, on fait de l'analyse de données sur des volumes importants, eh bien vous vous apercevrez que Numpai, le loadfromtext est relativement lent, et que Pandas par contre a un chargement optimisé. Principalement parce qu'en interne, il utilise du code en C pour faire le chargement. On va voir ça, d'ailleurs. Si je prends mon read_csv, et que je fais vous vous souvenez on est en iPython, un timeit qui va charger plusieurs fois et regarder quelle est la moyenne à peu près du temps de chargement. Vous voyez qu'on est en nanosecondes ici, donc ça va plutôt bien. Et je vais juste vous montrer quelque chose. Je reprends mon read_csv et j'ajoute un paramètre qui s'appelle skipfooter. Donc y'a beaucoup de paramètres à read_csv, vous pouvez vous référer bien sûr à l'aide sur le site de Pandas, et je vais dire, « à la fin, tu évites de lire les dix dernières lignes. Tu laisses tomber les dix dernières lignes. » Alors, y'a un warning, ici, ParserWarning, qui me dit, pendant que ça tourne, « Falling back to the 'python' engine because the 'c' engine does not support skip_footer. » Ce qui veut dire que avec cette commande, toutes les options peuvent être traitées par l'importeur écrit en C, dans Pandas. Par contre, certains paramètres ne sont pas supportés par l'importeur en C. En fait, y'a deux moteurs d'importation. Soit du C, soit du Python. Le moteur d'importation Python est plus lent. Vous l'avez peut-être constaté, ici on a 1,41 ms par loop, donc par read_csv, et là on a vraiment des données qui sont très très faibles, hein, on a un peu moins de 89 lignes, donc c'est vraiment rien du tout, quand on fait du vrai travail avec Pandas en général on a des données beaucoup plus volumineuses que ça à importer. Et donc, on a une moyenne de 1,41 ms pour importer ceci, alors qu'on est sur de la nanoseconde ici en C, donc voyez y'a vraiment une différence. Si j'utilise certains paramètres qui ne sont supportés que dans le moteur en Python qui est plus riche, eh bien, en interne, il va basculer sur le moteur en Python. On pourrait d'ailleurs le basculer automatiquement sur le moteur en Python sans faire ça, en indiquant ici quel type de moteur on veut utiliser. Engine, et je vais dire « ben je veux plutôt utiliser le moteur Python ». Et là vous voyez que je suis à peu près cohérent, 1,43 ms en moyenne par boucle, par contre, si j'utilise le moteur en C, ce qui dans ce cas est la valeur par défaut, puisque en interne, Pandas a compris que tous les paramètres sont supportés par le moteur C donc il bascule automatiquement sur le moteur en C, eh bien on a de bien meilleures performances. Alors, ici c'est pas évident mais, je vais le relancer une deuxième fois… Et je suis un peu moins bon ici donc ça doit être pour une raison particulière, j'essaie d'enlever c'est peut-être la mémoire de ma machine. Ouais effectivement donc sur ces importations, je suis un peu moins bon qu'avant. Mais je vous assure que ici on n'est pas vraiment de l'ordre de la milliseconde, peut-être que le calcul était un peu moins fin que ça. On est quand même beaucoup plus rapides que ça. Donc, tout ce que je voulais vous dire par ça, finalement, c'est que si vous faites des importations relativement simples, vous aurez de bien bien meilleures performances avec l'importation dans Pandas que avec une importation dans Numpai, Pandas est donc l'outil à préférer pour des volumes et tris importants parce qu'il est plus rapide et puis qu'il est beaucoup plus riche en fonctionnalités.

Découvrir la data science avec Python

Prenez en main les outils utilisés pour la data science avec Python, d'un point de vue technique. Pour cela, explorez les deux bibliothèques importantes, NumPy et Pandas.

2h16 (25 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :25 août 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !