Comment utiliser les DataFrames de pandas en Python pour analyser et manipuler des données
Liens rapides
- Qu'est-ce que les pandas ?
- Qu'est-ce qu'un DataFrame ?
- Comment créer un DataFrame
- Importer un DataFrame
- Examiner un DataFrame
- Ajouter et supprimer des colonnes
- Effectuer des opérations sur les colonnes
Si vous voulez analyser des données en Python, vous voudrez vous familiariser avec pandas, car cela rend l'analyse de données beaucoup plus facile. Le DataFrame est le format de données principal avec lequel vous interagirez. Voici comment l'utiliser.
Qu'est-ce que les pandas ?
pandas est un module Python populaire en science des données et en analyse de données. Il offre une manière d'organiser les données en DataFrames et propose de nombreuses opérations que vous pouvez effectuer sur ces données. Il a été initialement développé par AQR Capital Management, mais il a été open-source à la fin des années 2000.
Pour installer pandas en utilisant PyPI :
pip install pandas
Il est préférable de travailler avec pandas en utilisant un carnet Jupyter ou une autre session interactive Python. IPython est excellent pour des explorations occasionnelles des données dans le terminal, mais Jupyter enregistre vos calculs, ce qui est utile lorsque vous revenez à un ensemble de données des jours ou des semaines plus tard et avez du mal à vous rappeler ce que vous avez fait. J'ai créé mon propre carnet d'exemples de code que vous pouvez consulter sur ma page GitHub. C'est de là que proviennent les captures d'écran que vous verrez.
Qu'est-ce qu'un DataFrame ?
Un DataFrame est la principale structure de données avec laquelle vous travaillez dans pandas. Comme une feuille de calcul ou une base de données relationnelle, il organise les données en lignes et en colonnes. Les colonnes sont regroupées sous un nom d'en-tête. Le concept est similaire aux data frames de R, un autre langage de programmation populaire en statistiques et en science des données. Les colonnes d'un DataFrame peuvent contenir à la fois des données textuelles et numériques, y compris des entiers et des nombres à virgule flottante. Les colonnes peuvent également contenir des séries temporelles.
Comment créer un DataFrame
En supposant que vous ayez déjà installé pandas, vous pouvez créer un petit DataFrame à partir d'autres éléments.
Je vais créer des colonnes représentant une fonction linéaire qui pourrait être utilisée pour une analyse de régression plus tard. Tout d'abord, je vais créer l'axe des x, ou la variable indépendante, à partir d'un tableau NumPy :
import numpy as np
x = np.linspace(-10,10)
Ensuite, je vais créer la colonne y ou variable dépendante comme une fonction linéaire simple :
y = 2*x + 5
Maintenant, je vais importer pandas et créer le DataFrame.
import pandas as pd
Comme avec NumPy, raccourcir le nom de pandas le rendra plus facile à taper.
La méthode DataFrame de pandas prend un dictionnaire des noms des colonnes et des listes des données réelles. Je vais créer un DataFrame nommé "df" avec des colonnes intitulées "x" et "y". Les données seront les tableaux NumPy que j'ai créés précédemment.
df = pd.DataFrame({'x':x,'y':y})
Importer un DataFrame
Bien qu'il soit possible de créer des DataFrames à partir de zéro, il est plus courant d'importer les données depuis une autre source. Comme le contenu du DataFrame est tabulaire, les feuilles de calcul sont une source populaire. Les valeurs en haut de la feuille de calcul deviendront les noms des colonnes.
Pour lire un fichier Excel, utilisez la méthode read_excel :
df = pd.read_excel('/path/to/spreadsheet.xls')
En tant que fan de l'open-source, j'ai tendance à me tourner vers LibreOffice Calc plutôt que vers Excel, mais je peux également importer d'autres types de fichiers. Le format .csv est largement utilisé, et je peux exporter mes données dans ce format.
df = pd.read_csv('/path/to/data.csv')
Une fonctionnalité pratique est la possibilité de copier depuis le presse-papiers. Cela est idéal pour de petits ensembles de données afin d'accéder à des calculs plus avancés que ceux que je peux obtenir dans une feuille de calcul :
df = pd.read_clipboard()
Examiner un DataFrame
Maintenant que vous avez créé un DataFrame, l'étape suivante consiste à examiner les données qu'il contient.
Une façon de faire cela est d'obtenir les cinq premières lignes du DataFrame avec la méthode head
df.head()
Si vous avez déjà utilisé la commande head sur Linux ou d'autres systèmes de type Unix, c'est similaire. Si vous connaissez la commande tail, il existe une méthode similaire dans pandas qui permet d'obtenir les dernières lignes d'un DataFrame.
df.tail()
Vous pouvez utiliser des méthodes de découpage de tableau pour afficher un sous-ensemble précis de lignes. Pour afficher les lignes 1 à 3 :
df[1:3]
Avec la commande head dans Linux, vous pouvez afficher un nombre exact de lignes avec un argument numérique. Vous pouvez faire la même chose dans pandas. Pour voir les 10 premières lignes :
df.head(10)
La méthode de la queue fonctionne de manière similaire.
df.tail(10)
Il est encore plus intéressant d'examiner les ensembles de données existants. Une façon populaire de le démontrer est d'utiliser l'ensemble de données des passagers du Titanic. Il est disponible sur Kaggle. Beaucoup d'autres bibliothèques statistiques comme Seaborn et Pingouin vous permettent de charger des ensembles de données d'exemple afin que vous n'ayez pas à les télécharger. Les DataFrames de pandas seront également principalement utilisés pour alimenter ces bibliothèques en données, par exemple pour créer un graphique ou calculer une régression linéaire.
Une fois les données téléchargées, vous devrez les importer :
titanic = pd.read_csv('data/Titanic-Dataset.csv')
Regardons à nouveau la tête
titanic.head()
Nous pouvons également voir toutes les colonnes avec la méthode columns
titanic.columns
Pandas offre de nombreuses méthodes pour obtenir des informations sur le jeu de données. La méthode describe fournit quelques statistiques descriptives de toutes les colonnes numériques du DataFrame.
titanic.describe()
Premièrement, il y a la moyenne. Ensuite, il y a l'écart type, ou la proximité des valeurs autour de la moyenne. Viennent ensuite la valeur minimale, le premier quartile ou 25e percentile, la médiane, ou 50e percentile, le troisième quartile ou 75e percentile, et la valeur maximale. Ces valeurs constituent le « résumé en cinq nombres » du célèbre statisticien John Tukey. Vous pouvez rapidement voir comment vos données sont distribuées en utilisant ces chiffres.
Pour accéder à une colonne seule, appelez le nom du DataFrame avec le nom de la colonne entre crochets ('[]').
Par exemple, pour afficher la colonne avec le nom des passagers :
titanic['Name']
Parce que la liste est si longue, elle sera tronquée par défaut. Pour voir la liste complète des noms, utilisez la méthode to_string.
titanic['Name'].to_string()
Vous pouvez également désactiver la troncature. Pour la désactiver avec des colonnes contenant un grand nombre de lignes :
pd.set_option('display.max_rows', None)
Vous pouvez également utiliser d'autres méthodes lors de la sélection par ligne. Pour voir les statistiques descriptives d'une colonne :
titanic['Age'].describe()
Vous pouvez également accéder aux valeurs individuelles
titanic['Age'].mean()
titanic['Age'].median()
Ajouter et supprimer des colonnes
Non seulement vous pouvez examiner les colonnes, mais vous pouvez également en ajouter de nouvelles. Vous pouvez ajouter une colonne et la remplir de valeurs, comme vous le feriez avec un tableau Python, mais vous pouvez aussi transformer des données et les ajouter à de nouvelles colonnes.
Revenons au DataFrame original que nous avons créé, df. Nous pouvons effectuer des opérations sur chaque élément d'une colonne. Par exemple, pour mettre au carré la colonne x :
df['x']**2
Nous pouvons créer une nouvelle colonne avec ces valeurs :
df['x2'] = df['x']**2
Pour supprimer une colonne, vous pouvez utiliser la fonction drop
df.drop('x2',axis=1)
L'argument axis indique à pandas d'opérer par colonnes plutôt que par lignes.
Effectuer des opérations sur les colonnes
Comme mentionné précédemment, vous pouvez effectuer des opérations sur les colonnes. Vous pouvez y réaliser des opérations mathématiques et statistiques.
Nous pouvons additionner nos colonnes x et y :
df['x'] + df['y']
Vous pouvez sélectionner plusieurs colonnes avec des doubles crochets.
Pour voir les noms et âges des passagers du Titanic :
titanic[['Name','Age']]
Les éléments de la colonne doivent être séparés par un caractère virgule (,).
Vous pouvez également rechercher dans les DataFrames pandas, de manière similaire aux recherches SQL. Pour voir les lignes des passagers qui avaient plus de 30 ans lorsqu'ils ont embarqué sur le paquebot malheureux, vous pouvez utiliser une sélection booléenne à l'intérieur des crochets :
titanic[titanic['Age'] > 30]
C'est comme l'instruction SQL :
SELECT * FROM titanic WHERE Age > 30
Vous pouvez sélectionner la colonne en utilisant .loc avant les crochets :
titanic.loc [titanic['Age'] > 30]Faisons un diagramme en barres des lieux d'embarquement des passagers du Titanic. Nous pouvons créer notre propre sous-ensemble du DataFrame avec les trois points d'embarquement : Southampton, en Angleterre ; Cherbourg, en France ; et Queenstown, en Irlande (aujourd'hui Cobh).
embarked = titanic['Embarked'].value_counts()
Cela créera un nouveau DataFrame avec le nombre de personnes ayant embarqué à chaque port. Mais nous avons un problème. Les en-têtes de colonne sont simplement des lettres représentant le nom du port. Remplaçons-les par les noms complets des ports. La méthode rename prendra un dictionnaire des anciens noms et des nouveaux.
embarked = embarked.rename({'S':'Southhampton','C':'Cherbourg','Q':'Queenstown'})
Avec les colonnes renommées, nous pouvons créer notre diagramme à barres. C'est facile avec pandas :
embarked.plot(kind='bar')
Cela devrait vous aider à commencer à explorer les ensembles de données pandas. pandas est l'une des raisons pour lesquelles Python est devenu si populaire auprès des statisticiens, des data scientists et de toute personne ayant besoin d'explorer des données.
















