Python >> Tutoriel Python >  >> Python Tag >> Pandas

10 minutes aux pandas (en 5 minutes)

Ce didacticiel vous fournit une introduction rapide et grossière aux fonctionnalités les plus importantes de Pandas. Un guide de démarrage rapide populaire pour la bibliothèque Pandas est fourni par le document officiel "10 Minutes to Pandas" guide.

Ce tutoriel devant vous vise à couvrir les 80% les plus importants du guide officiel, mais dans 50% du temps. Êtes-vous prêt à investir 5 de vos précieuses minutes pour vous lancer dans Pandas et booster vos compétences en science des données et en Python en même temps ? Plongeons-y !

Aperçu visuel [Aide-mémoire]

Je trouve toujours utile de donner un aperçu rapide des sujets abordés, sous forme visuelle. Pour vous aider à avoir une vue d'ensemble, j'ai visualisé les sujets décrits dans cet article dans l'aide-mémoire Pandas suivant :

Passons en revue les différentes parties de cet aperçu visuel étape par étape.

Comment utiliser les pandas ?

Vous accédez à la librairie Pandas avec le import pandas as pd instruction qui attribue l'identificateur de nom abrégé pd au module pour faciliter l'accès et la brièveté. Au lieu de pandas.somefunction() , vous pouvez maintenant appeler le pd.somefunction() .

import pandas as pd

Vous pouvez installer la bibliothèque Pandas dans votre environnement virtuel ou votre ordinateur en utilisant la commande suivante :

pip install pandas

Si vous ne le faites pas, vous rencontrerez l'erreur d'importation :

>>> import pandas as pd
Traceback (most recent call last):
  File "yourApp.py", line 1, in <module>
    import pandas as pd 
ImportError: No module named pandas

Pandas est déjà installé dans de nombreux environnements comme à Anaconda. Vous pouvez trouver un guide d'installation détaillé ici :

Guide d'installation : https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html

Comment créer des objets dans Pandas ?

Les deux types de données les plus importants dans Pandas sont les séries et les DataFrames.

  • Une série Pandas est un tableau étiqueté unidimensionnel de valeurs de données. Considérez-le comme une colonne dans une feuille Excel.
  • Un Frame de données Pandas est une structure de données étiquetée à deux dimensions, un peu comme une feuille de calcul (par exemple, Excel) dans votre code Python.

Ces deux structures de données sont étiquetées — nous appelons les étiquettes indices des structures de données. La principale différence est que la série est unidimensionnelle tandis que le DataFrame est bidimensionnel.

Série  : Voici un exemple de création d'un objet Série :

import pandas as pd


s = pd.Series([42, 21, 7, 3.5])
print(s)
'''
0    42.0
1    21.0
2     7.0
3     3.5
dtype: float64
'''

Vous utilisez le pd.Series() constructeur et transmettez-lui une liste plate de valeurs. Vous pouvez également y transmettre d'autres types de données tels que des chaînes. Pandas déterminera automatiquement le type de données de toute la série dans le dtype attribut.

DataFrame  :Voici un exemple de création d'un objet DataFrame :

import pandas as pd


s = pd.DataFrame({'age': 18,
                  'name': ['Alice', 'Bob', 'Carl'],
                  'cardio': [60, 70, 80]})

print(s)
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''

Vous utilisez le pd.DataFrame() constructeur avec un seul argument :le dictionnaire qui décrit le DataFrame. Le dictionnaire mappe les noms de colonne tels que 'age' , 'name' , et 'cardio' aux valeurs de colonne telles que ['Alice', 'Bob', 'Carl'] pour la colonne 'name' . Vous ne pouvez fournir qu'une seule valeur de colonne, telle que 18 et l'affecter à une colonne entière telle que 'age' . Les pandas vont alors automatiquement diffuser la valeur à toutes les lignes existantes dans le DataFrame.

Comment sélectionner des éléments dans les séries et les dataframes ?

Appliquons quelques premiers principes de réflexion :la série et le DataFrame sont des structures de données . Le but d'une structure de données est de faciliter le stockage, l'accès et l'analyse des données . Vous pouvez également stocker des données tabulaires avec des lignes et des colonnes dans une liste de tuples - un par ligne - mais l'accès aux données serait très inefficace. Cependant, accéder à tous les éléments de la ième colonne serait très pénible car vous devriez parcourir toute la liste et agréger les ième valeurs de tuple.

Heureusement, Pandas rend le stockage, l'accès et l'analyse des données tabulaires aussi simples que possible. C'est à la fois efficace et lisible.

Colonne  :Voici comment accéder à une colonne avec le schéma d'indexation que vous connaissez déjà dans les dictionnaires Python et les tableaux NumPy (notation entre crochets) :

import pandas as pd


s = pd.DataFrame({'age': 18,
                  'name': ['Alice', 'Bob', 'Carl'],
                  'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''

# Select all elements in column 'age'
print(s['age'])
'''
0    18
1    18
2    18
Name: age, dtype: int64
'''

Après avoir importé le module Pandas et créé un DataFrame avec trois colonnes et trois lignes, vous sélectionnez toutes les valeurs dans la colonne intitulée 'age' en utilisant la notation entre crochets s['age'] . Une alternative sémantiquement équivalente serait la syntaxe s.age .

Lignes  :Vous pouvez accéder à des lignes spécifiques dans le DataFrame en utilisant la notation de découpage s[start:stop] . Pour accéder à une seule ligne, définissez le start et end indexe en conséquence :

import pandas as pd


s = pd.DataFrame({'age': 18,
                  'name': ['Alice', 'Bob', 'Carl'],
                  'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''


print(s[2:3])
'''
   age  name  cardio
2   18  Carl      80
'''

Vous pouvez trouver un didacticiel complet sur le découpage dans les articles suivants du blog Finxter.

Article connexe

  • Guide ultime du découpage en Python
  • Découpage NumPy

Indexation booléenne

L'indexation booléenne est un moyen puissant d'accéder aux lignes qui correspondent à une certaine condition. .

import pandas as pd


s = pd.DataFrame({'age': 18,
                  'name': ['Alice', 'Bob', 'Carl'],
                  'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''


print(s[s['cardio']>60])
'''
   age  name  cardio
1   18   Bob      70
2   18  Carl      80
'''

La condition s['cardio']>60 donne un certain nombre de valeurs booléennes. Le i -ième valeur booléenne est 'True' si le i -ième élément du 'cardio' colonne est supérieure à 60. Cela vaut pour les deux premières lignes du DataFrame.

Vous transmettez ensuite ces valeurs booléennes en tant que schéma d'indexation dans le DataFrame s ce qui donne un DataFrame avec seulement deux lignes au lieu de trois.

Sélection par libellé

Vous pouvez accéder à un Pandas DataFrame par étiquette en utilisant le mécanisme d'indexation pd.loc[rows, columns] . Voici un exemple :

import pandas as pd


df = pd.DataFrame({'age': 18,
                   'name': ['Alice', 'Bob', 'Carl'],
                   'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''


print(df.loc[:, 'name'])
'''
0    Alice
1      Bob
2     Carl
Name: name, dtype: object
'''

Dans l'exemple, vous accédez à toutes les lignes de la colonne 'name' . Pour accéder aux deux premières lignes avec les colonnes 'age' et 'cardio' , utilisez le schéma d'indexation suivant en transmettant une liste d'étiquettes de colonne :

print(df.loc[:, ['age', 'cardio']])
'''
   age  cardio
0   18      60
1   18      70
2   18      80
'''

Alors que le loc index vous fournit un moyen d'accéder au contenu DataFrame par étiquette, vous pouvez également y accéder par index en utilisant le iloc indice.

Sélection par index

Comment accéder au i -ème ligne et le j -ième colonne ? Le iloc index vous permet d'accomplir exactement cela :

import pandas as pd


df = pd.DataFrame({'age': 18,
                   'name': ['Alice', 'Bob', 'Carl'],
                   'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''

i, j = 2, 1
print(df.iloc[i, j])
'''
Carl
'''

Le premier argument i accède au i -ième ligne et le deuxième argument j accède au j -ème colonne du iloc indice. La valeur de données dans la troisième ligne avec l'index 2 et la deuxième colonne avec l'index 1 est 'Carl' .

Comment modifier un DataFrame existant

Vous pouvez utiliser les technologies de sélection discutées pour modifier et éventuellement écraser une partie de votre DataFrame. Pour ce faire, sélectionnez les pièces à remplacer ou nouvellement créées sur le côté droit et définissez les nouvelles données sur le côté gauche de l'expression d'affectation. Voici un exemple minimal qui écrase les valeurs entières dans le 'age' colonne :

import pandas as pd


df = pd.DataFrame({'age': 18,
                   'name': ['Alice', 'Bob', 'Carl'],
                   'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''

df['age'] = 17

print(df)
'''
   age   name  cardio
0   17  Alice      60
1   17    Bob      70
2   17   Carl      80
'''

Tout d'abord, vous sélectionnez la colonne d'âge avec df['age'] . Deuxièmement, vous l'écrasez avec la valeur entière 17. Pandas utilise la diffusion pour copier l'entier unique dans toutes les lignes de la colonne.

Voici un exemple plus avancé qui utilise le découpage et le loc index pour écraser tout sauf la première ligne de la colonne age :

import pandas as pd


df = pd.DataFrame({'age': 18,
                   'name': ['Alice', 'Bob', 'Carl'],
                   'cardio': [60, 70, 80]})
'''
   age   name  cardio
0   18  Alice      60
1   18    Bob      70
2   18   Carl      80
'''

df.loc[1:,'age'] = 17

print(df)
'''
   age   name  cardio
0   18  Alice      60
1   17    Bob      70
2   17   Carl      80
'''

Pouvez-vous repérer la différence entre les DataFrames ?

Pandas est très robuste et si vous avez compris les différents schémas d'indexation—notation entre parenthèses, découpage, loc , et iloc — vous comprendrez également comment écraser des données existantes ou ajouter de nouvelles données.

Par exemple, voici comment vous pouvez ajouter une nouvelle colonne avec le loc index, découpage et diffusion :

df.loc[:,'love'] = 'Alice'
print(df)
'''
   age   name  cardio   love
0   18  Alice      60  Alice
1   17    Bob      70  Alice
2   17   Carl      80  Alice
'''

Alors que Pandas a beaucoup plus de fonctionnalités telles que le calcul de statistiques, le traçage, le regroupement et le remodelage, pour n'en nommer que quelques-uns, le tutoriel de 5 minutes pour Pandas se termine ici. Si vous avez compris les concepts abordés dans ce didacticiel, vous pourrez lire et comprendre le code Pandas existant avec un peu d'aide de la documentation officielle et de Google pour comprendre les différentes fonctions.

N'hésitez pas à parcourir nos cours Pandas et nos livres à venir pour améliorer vos compétences Pandas au fil du temps. Vous pouvez vous inscrire à l'académie de messagerie gratuite ici.