Comment apprendre les pandas

Dans cet article, je décrirai une stratégie pour «apprendre les pandas». Pour ceux qui l'ignorent, les pandas sont la bibliothèque la plus populaire de l'écosystème scientifique Python pour l'analyse de données. Les pandas sont capables de nombreuses tâches, notamment:

  • Lecture / écriture de nombreux formats de données différents
  • Sélection de sous-ensembles de données
  • Calculer à travers les lignes et les colonnes
  • Trouver et remplir les données manquantes
  • Application d'opérations à des groupes indépendants au sein des données
  • Remodelage des données sous différentes formes
  • Combinaison de plusieurs jeux de données ensemble
  • Fonctionnalité chronologique avancée
  • Visualisation à travers matplotlib et seaborn

Devenir un expert

  • Mon livre Analyse des données principales avec Python est le texte le plus complet du marché pour apprendre l’analyse de données utilisant Python. Il comprend plus de 300 exercices et projets.
  • Inscrivez-vous à la classe gratuite d'introduction aux pandas
  • Suivez-moi sur Twitter @TedPetrou pour mes astuces quotidiennes en science des données

Bien que les pandas soient très capables, ils ne fournissent pas de fonctionnalité pour tout le pipeline de la science des données. Les pandas sont généralement l’outil intermédiaire utilisé pour l’exploration et le nettoyage des données, entre la capture et le stockage de données, ainsi que pour la modélisation et la prévision de données.

Pipeline Data Science

Pour un scientifique de données typique, les pandas joueront le rôle le plus important lorsque les données traversent le pipeline. Une mesure pour quantifier cela est avec l'application de tendances Stack Overflow.

Actuellement, les pandas ont plus d’activité sur Stack Overflow que n’importe quelle autre bibliothèque de science des données Python et représentent 1% des nouvelles questions soumises sur l’ensemble du site.

Débordement de pile

Dans le graphique ci-dessus, nous avons des preuves que beaucoup de gens utilisent et sont aussi confus par les pandas. J'ai répondu à environ 400 questions sur les pandas sur Stack Overflow et je constate directement à quel point la bibliothèque est mal comprise. Malgré tout ce que Stack Overflow a apporté aux programmeurs, il présente un inconvénient majeur. La gratification instantanée de trouver une réponse est un obstacle majeur à l’utilisation autonome de la documentation et d’autres ressources. Je pense que ce serait une bonne idée de consacrer quelques semaines chaque année à ne pas utiliser Stack Overflow.

Guide pas à pas pour apprendre les pandas

Il y a quelques semaines, j'ai posté un guide simple sur le subreddit de r / datascience quand quelqu'un demandait de l'aide sur la pratique des pandas. Ce qui suit développe les informations de ce post.

Pour commencer, vous ne devriez pas réellement avoir pour objectif «d’apprendre les pandas». Bien qu’il soit utile de savoir exécuter les opérations dans la bibliothèque, cela ne sera pas aussi bénéfique que d’apprendre à utiliser des pandas de la même manière que vous le feriez lors d’une analyse de données. Vous pouvez segmenter votre apprentissage en deux catégories distinctes:

  • Apprendre la bibliothèque de pandas indépendamment de l'analyse des données
  • Apprendre à utiliser les pandas comme vous le feriez lors d'une analyse de données réelle

La différence entre les deux, c'est comme apprendre à scier quelques petites branches en deux, plutôt que d'aller dans une forêt et de scier des arbres. Résumons ces deux approches avant d’entrer dans les détails.

Apprendre la bibliothèque de pandas indépendamment de l'analyse des données: cette approche implique principalement la lecture et, plus important encore, l'exploration de la documentation officielle des pandas.

Apprendre à utiliser les pandas comme vous le feriez lors d'une analyse de données réelle: cette approche implique de rechercher ou de collecter des données réelles et d'effectuer une analyse de données de bout en bout. Les jeux de données Kaggle sont l’un des meilleurs endroits pour trouver des données. Ce n’est pas le composant d’apprentissage automatique de Kaggle, ce que je vous suggère fortement d’éviter jusqu’à ce que vous soyez plus à l’aise avec les pandas.

Approche alternative

Au cours de votre voyage pour apprendre à analyser des données avec des pandas, vous devez alterner l'apprentissage des principes fondamentaux de la documentation et leur application dans un jeu de données du monde réel. Ceci est très important, car il est facile d’apprendre juste assez de pandas pour effectuer la plupart de vos tâches, puis de s’appuyer trop lourdement sur ces bases lorsque des opérations plus avancées existent.

Commencez par la documentation

Si vous n'avez jamais travaillé avec des pandas auparavant, mais que vous maîtrisez suffisamment le langage Python de base, je vous suggère de commencer par la documentation officielle relative aux pandas. Il est extrêmement complet et dans son état actuel, 2 195 pages (attention, le lien est en pdf intégral). Même avec sa taille imposante, la documentation ne couvre pas toutes les opérations et certainement pas toutes les combinaisons de paramètres que vous pouvez utiliser dans les fonctions / méthodes de pandas.

Tirer le meilleur parti de la documentation

Pour tirer le meilleur parti de la documentation, ne vous contentez pas de la lire. Je suggère de couvrir environ 15 sections de la documentation. Pour chaque section, créez un nouveau carnet Jupyter. Lisez cet article de blog de Data Camp si vous n'êtes pas familier avec les blocs-notes Jupyter.

Votre premier cahier Jupyter

Commencez par la section, Introduction aux structures de données. Ouvrez cette page à côté de votre carnet Jupyter. En lisant la documentation, écrivez le code (ne le copiez pas) et exécutez-le dans le cahier. Lors de l'exécution du code, veillez à explorer les opérations et à essayer de nouvelles manières de les utiliser.

Continuez avec la section Indexation et sélection de données. Créez un nouveau bloc-notes Jupyter et écrivez, exécutez et explorez à nouveau les différentes opérations que vous apprenez. La sélection des données est l’un des aspects les plus difficiles à comprendre pour les utilisateurs débutants de pandas. J'ai écrit un long article Stack Overflow sur .loc vs .iloc que vous voudrez peut-être lire pour une autre explication.

Après ces deux sections, vous devez comprendre les composants d’un DataFrame et d’une Série et savoir comment sélectionner différents sous-ensembles de données. Maintenant, lisez 10 minutes aux pandas pour avoir un aperçu plus général de plusieurs autres opérations utiles. Comme pour toutes les sections, créez un nouveau cahier.

Appuyez sur Maj + Tab + Tab pour obtenir de l'aide dans un cahier Jupyter.

J'appuie constamment sur Maj + Tab + Tab lorsque j'utilise des pandas dans un cahier Jupyter. Lorsqu'un curseur est placé dans le nom ou dans les parenthèses qui suivent un code Python valide, la documentation relative à cet objet apparaît dans une petite zone à défilement. Cette boîte d’aide m’est précieuse car il est impossible de se rappeler tous les noms de paramètres et leurs types d’entrée.

Appuyez sur Maj + Tab + Tab pour afficher la documentation de la méthode de pile

Vous pouvez également appuyer sur Tab directement après un point pour avoir un menu déroulant de tous les objets disponibles.

Un onglet après un DataFrame répertorie les 200 objets disponibles

Si vous appréciez cet article, envisagez l'achat du All Access Pass! qui comprend tout mon matériel actuel et futur pour un prix modique.

Inconvénient majeur de la documentation

Bien que la documentation soit très complète, elle ne permet pas d’apprendre à analyser correctement des données réelles. Toutes les données sont artificielles ou générées aléatoirement. En outre, l'analyse de données réelles impliquera plusieurs opérations de pandas (parfois des dizaines) liées les unes aux autres. Vous ne serez jamais exposé à cela grâce à la documentation. La documentation enseigne une approche mécanique de l'apprentissage des pandas, dans laquelle une méthode est apprise indépendamment des autres.

Votre première analyse de données

Après ces trois sections de la documentation, vous serez prêt pour votre première exposition à des données réelles. Comme mentionné précédemment, je recommande de commencer par les jeux de données Kaggle. Vous pouvez trier par le plus voté pour renvoyer les plus populaires tels que le jeu de données de film TMDB 5000. Téléchargez les données et créez un nouveau bloc-notes Jupyter sur cet ensemble de données uniquement. Il est peu probable que vous puissiez effectuer un traitement de données avancé à ce stade, mais vous devriez pouvoir mettre en pratique ce que vous avez appris dans les trois sections de la documentation.

Regardez les noyaux

Chaque jeu de données Kaggle a une section de noyaux (noyaux de jeux de films). Ne laissez pas le nom de «noyau» vous confondre - c’est juste un bloc-notes Jupyter créé par un utilisateur de Kaggle en Python ou R. C’est l’une de vos meilleures opportunités d’apprentissage. Après avoir effectué vous-même quelques analyses de base, ouvrez l’un des noyaux Python les plus populaires. Lisez plusieurs d'entre eux et prenez des morceaux de code que vous trouvez intéressants et insérez-les dans votre propre bloc-notes.

Si vous ne comprenez pas quelque chose, posez une question dans la section commentaires. Vous pouvez réellement créer votre propre noyau, mais pour l’instant, je préférerais travailler localement dans vos cahiers.

Retour à la documentation

Une fois que vous avez terminé votre premier noyau, vous pouvez revenir à la documentation et compléter une autre section. Voici le chemin recommandé dans la documentation:

  • Travailler avec les données manquantes
  • Grouper par: split-apply-combine
  • Remodelage et tableaux croisés dynamiques
  • Fusionner, rejoindre et concaténer
  • Outils IO (Texte, CSV, HDF5,…)
  • Travailler avec des données texte
  • Visualisation
  • Fonctionnalité Time Series / Date
  • Time Deltas
  • Données catégoriques
  • Outils informatiques
  • Indexation multi-index / avancée

Cet ordre est très différent de celui présenté à gauche de la page d'accueil de la documentation et couvre les sujets que je considère comme étant les plus importants en premier. Il existe plusieurs sections de la documentation qui ne sont pas répertoriées ci-dessus, que vous pouvez couvrir vous-même ultérieurement.

Après avoir terminé ces sections de la documentation et environ 10 noyaux Kaggle, vous devriez être à l'aise pour vous sentir à l'aise avec les mécanismes des pandas et l'analyse des données.

Apprendre l'analyse de données exploratoire

En lisant de nombreux noyaux Kaggle populaires, vous en apprendrez beaucoup sur ce qui fait une bonne analyse de données. Pour une approche plus formelle et rigoureuse, je vous recommande de lire le chapitre 4, Analyse exploratoire de données, du livre en ligne de Howard Seltman.

Créer vos propres noyaux

Vous devriez envisager de créer vos propres noyaux sur Kaggle. C’est un excellent moyen de vous forcer à écrire des cahiers Jupyter propres et clairs. Il est typique de créer vous-même des cahiers très en désordre avec un code écrit dans le désordre qui serait impossible à quelqu'un d'autre (comme votre futur moi) à comprendre. Lorsque vous publiez un noyau en ligne, je vous suggère de le faire comme si vous vous attendiez à ce que votre employeur actuel ou futur le lise. Rédigez un résumé ou un résumé en haut et expliquez clairement chaque bloc de code avec démarque. Ce que je fais habituellement, c'est créer un cahier exploratoire en désordre et un cahier séparé en tant que produit final. Voici un noyau d'un de mes étudiants sur le jeu de données d'analyse des ressources humaines.

Ne vous contentez pas d'apprendre les pandas; Le maîtriser

Il y a une énorme différence entre un utilisateur de pandas qui en sait assez pour s'en sortir et un utilisateur expérimenté qui le maîtrise. Il est assez courant que les utilisateurs habituels de pandas écrivent un code de mauvaise qualité, car il existe une quantité assez importante de fonctionnalités et souvent de multiples façons d’obtenir le même résultat. Il est assez facile d’écrire certaines opérations de pandas qui obtiennent votre résultat, mais de manière très inefficace.

Si vous êtes un scientifique qui travaille avec Python, vous utilisez probablement déjà fréquemment des pandas. Il est donc prioritaire de le maîtriser, ce qui devrait créer beaucoup de valeur pour vous. De nombreuses astuces amusantes sont également disponibles.

Testez vos connaissances avec le débordement de pile

Vous ne connaissez pas vraiment une bibliothèque Python si vous ne pouvez pas répondre à la majorité des questions qui y sont posées qui sont posées sur Stack Overflow. Cette affirmation est peut-être un peu trop forte, mais en général, Stack Overflow constitue un excellent terrain d’essai pour vos connaissances sur une bibliothèque particulière. Plus de 50 000 questions ont été identifiées comme pandas. Vous disposez donc d'une banque de tests sans fin pour développer vos connaissances sur les pandas.

Si vous n'avez jamais répondu à une question sur le dépassement de capacité, je vous recommanderais d'examiner les questions plus anciennes qui ont déjà des réponses et d'essayer d'y répondre en utilisant uniquement la documentation. Une fois que vous avez l’impression que vous pouvez rassembler des réponses de grande qualité, je vous suggère de tenter des questions sans réponses. Rien n'améliorait davantage mes compétences en pandas que de répondre à des questions sur Stack Overflow.

Vos propres projets

Les noyaux Kaggle sont excellents, mais vous devez vous attaquer à un projet unique par vous-même. La première étape consiste à rechercher des données, pour lesquelles il existe de nombreuses ressources telles que:

  • data.gov
  • data.world
  • Données ouvertes NYC, données ouvertes Houston, données ouvertes Denver - la plupart des grandes villes américaines ont des portails de données ouvertes

Après avoir trouvé le jeu de données que vous souhaitez explorer, poursuivez le même processus de création d’un bloc-notes Jupyter et, si vous avez un bon produit final, postez-le sur GitHub.

Résumé

En résumé, utilisez la documentation pour apprendre les mécanismes des opérations sur les pandas et utilisez des ensembles de données réels, à commencer par les noyaux Kaggle, pour apprendre à utiliser les pandas pour analyser des données. Enfin, testez vos connaissances avec Stack Overflow.

Obtenez le Pass All Access!

Obtenez tous mes documents actuels et futurs à un prix avantageux avec le passe tout accès! Les cours primaires disponibles sont les suivants:

  • Exercice python
  • Analyse des données de base avec Python
  • Master Machine Learning avec Python