Comment créer un DataFrame Pandas [avec exemples]

Publié: 2022-12-08

Apprenez les bases du travail avec pandas DataFrames : la structure de données de base dans pandas, une puissante bibliothèque de manipulation de données.

Si vous souhaitez vous lancer dans l'analyse de données en Python, pandas est l'une des premières bibliothèques avec lesquelles vous devriez apprendre à travailler. De l'importation de données à partir de plusieurs sources telles que des fichiers CSV et des bases de données à la gestion des données manquantes et à leur analyse pour obtenir des informations - les pandas vous permettent de faire tout ce qui précède.

Pour commencer à analyser des données avec des pandas, vous devez comprendre la structure de données fondamentale dans les pandas : les trames de données .

Dans ce didacticiel, vous apprendrez les bases des dataframes pandas et les méthodes courantes pour créer des dataframes. Vous apprendrez ensuite à sélectionner des lignes et des colonnes à partir du dataframe pour récupérer des sous-ensembles de données.

Pour tout cela et plus encore, commençons.

Installer et importer des pandas

Comme pandas est une bibliothèque d'analyse de données tierce, vous devez d'abord l'installer. Il est recommandé d'installer des packages externes dans un environnement virtuel pour votre projet.

Si vous utilisez la distribution Anaconda de Python, vous pouvez utiliser conda pour la gestion des packages.

 conda install pandas

Vous pouvez également installer des pandas en utilisant pip :

 pip install pandas

La bibliothèque pandas nécessite NumPy comme dépendance. Donc, si NumPy n'est pas déjà installé, il sera également installé pendant le processus d'installation.

Après avoir installé pandas, vous pouvez l'importer dans votre environnement de travail. En général, pandas est importé sous l'alias pd :

 import pandas as pd

Qu'est-ce qu'un DataFrame dans Pandas ?

Qu'est-ce-qu'un-DataFrame-dans-Pandas

La structure de données fondamentale dans les pandas est la trame de données . Un bloc de données est un tableau de données à deux dimensions avec un index étiqueté et des colonnes nommées . Chaque colonne du bloc de données, appelée pandas series , partage un index commun.

Voici un exemple de bloc de données que nous allons créer à partir de zéro au cours des prochaines minutes. Cette base de données contient des données sur les dépenses de six étudiants en quatre semaines.

pd-dataframe-ex

Les noms des élèves sont les étiquettes de ligne. Et les colonnes sont nommées 'Week1' à 'Week4'. Notez que toutes les colonnes partagent le même ensemble d'étiquettes de ligne, également appelé index .

Comment créer un DataFrame Pandas

Il existe plusieurs façons de créer une trame de données pandas. Dans ce tutoriel, nous aborderons les méthodes suivantes :

  • Créer une trame de données à partir de tableaux NumPy
  • Créer une trame de données à partir d'un dictionnaire Python
  • Créer une trame de données en lisant des fichiers CSV

À partir de tableaux NumPy

Créons une trame de données à partir d'un tableau NumPy.

Créons le tableau de données de forme (6,4) en supposant qu'au cours d'une semaine donnée, chaque élève dépense entre 0 $ et 100 $. La fonction randint() du module random de NumPy renvoie un tableau d'entiers aléatoires dans un intervalle donné, [low,high) .

 import numpy as np np.random.seed(42) data = np.random.randint(0,101,(6,4)) print(data)
 array([[51, 92, 14, 71], [60, 20, 82, 86], [74, 74, 87, 99], [23, 2, 21, 52], [ 1, 87, 29, 37], [ 1, 63, 59, 20]])

Pour créer une trame de données pandas, vous pouvez utiliser le constructeur DataFrame et transmettre le tableau NumPy comme argument de data , comme indiqué :

 students_df = pd.DataFrame(data=data)

Nous pouvons maintenant appeler la fonction intégrée type() pour vérifier le type de students_df . Nous voyons qu'il s'agit d'un objet DataFrame .

 type(students_df) # pandas.core.frame.DataFrame
 print(students_df)
pandas-dataframe-01

Nous voyons que par défaut, nous avons une indexation de plage qui va de 0 au numRows - 1, et les étiquettes de colonne sont 0, 1, 2, …, numCols -1. Cependant, cela réduit la lisibilité. Il sera utile d'ajouter des noms de colonne descriptifs et des étiquettes de ligne au bloc de données.

Créons deux listes : une pour stocker les noms des élèves et une autre pour stocker les étiquettes des colonnes.

 students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny'] cols = ['Week1','Week2','Week3','Week4']

Lors de l'appel du constructeur DataFrame , vous pouvez définir l' index et les columns sur les listes d'étiquettes de ligne et d'étiquettes de colonne à utiliser, respectivement.

 students_df = pd.DataFrame(data = data,index = students,columns = cols)

Nous avons maintenant le students_df de données Students_df avec des étiquettes descriptives de ligne et de colonne.

 print(students_df)
pandas-dataframe-02

Pour obtenir des informations de base sur le bloc de données, telles que les valeurs manquantes et les types de données, vous pouvez appeler la méthode info() sur l'objet de bloc de données.

 students_df.info()
image-114

À partir d'un dictionnaire Python

Vous pouvez également créer une trame de données pandas à partir d'un dictionnaire Python.

Ici, data_dict est le dictionnaire contenant les données des étudiants :

  • Les noms des élèves sont les clés.
  • Chaque valeur est une liste de combien chaque élève dépense de la première à la quatrième semaine.
 data_dict = {} students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny'] for student,student_data in zip(students,data): data_dict[student] = student_data

Pour créer une trame de données à partir d'un dictionnaire Python, utilisez from_dict , comme indiqué ci-dessous. Le premier argument correspond au dictionnaire contenant les données ( data_dict ). Par défaut, les clés sont utilisées comme noms de colonne du bloc de données. Comme nous aimerions définir les clés comme étiquettes de ligne , définissez orient= 'index' .

 students_df = pd.DataFrame.from_dict(data_dict,orient='index') print(students_df)
pandas-dataframe-de-dict

Pour remplacer les noms de colonne par le numéro de semaine, nous définissons les cols sur la liste des colonnes :

 students_df = pd.DataFrame.from_dict(data_dict,orient='index',columns=cols) print(students_df)
pandas-dataframe-03

Lire dans un fichier CSV dans un Pandas DataFrame

Supposons que les données des étudiants soient disponibles dans un fichier CSV. Vous pouvez utiliser la fonction read_csv() pour lire les données du fichier dans une trame de données pandas. pd.read_csv('file-path') est la syntaxe générale, où file-path est le chemin d'accès au fichier CSV. Nous pouvons définir le paramètre names sur la liste des noms de colonnes à utiliser.

 students_df = pd.read_csv('/content/students.csv',names=cols)

Maintenant que nous savons comment créer un bloc de données, apprenons à sélectionner des lignes et des colonnes.

Sélectionner des colonnes à partir d'un DataFrame Pandas

Il existe plusieurs méthodes intégrées que vous pouvez utiliser pour sélectionner des lignes et des colonnes à partir d'un bloc de données. Ce didacticiel passera en revue les méthodes les plus courantes pour sélectionner des colonnes, des lignes, ainsi que des lignes et des colonnes à partir d'un bloc de données.

Sélection d'une seule colonne

Pour sélectionner une seule colonne, vous pouvez utiliser df_name[col_name]col_name est la chaîne indiquant le nom de la colonne.

Ici, nous sélectionnons uniquement la colonne 'Week1'.

 week1_df = students_df['Week1'] print(week1_df)
seule colonne

Sélection de plusieurs colonnes

Pour sélectionner plusieurs colonnes dans le bloc de données, transmettez la liste de tous les noms de colonne à sélectionner.

 odd_weeks = students_df[['Week1','Week3']] print(odd_weeks)
plusieurs colonnes

En plus de cette méthode, vous pouvez également utiliser les iloc() et loc() pour sélectionner des colonnes. Nous coderons un exemple plus tard.

Sélectionner des lignes à partir d'un DataFrame Pandas

4-2

Utilisation de la méthode .iloc()

Pour sélectionner des lignes à l'aide de la méthode iloc() , passez les indices correspondant à toutes les lignes sous forme de liste.

Dans cet exemple, nous sélectionnons les lignes à l'indice impair.

 odd_index_rows = students_df.iloc[[1,3,5]] print(odd_index_rows)
rangs impairs

Ensuite, nous sélectionnons un sous-ensemble du bloc de données contenant les lignes aux index 0 à 2, le point final 3 est exclu par défaut.

 slice1 = students_df.iloc[0:3] print(slice1)
select-rows

Utilisation de la méthode .loc()

Pour sélectionner les lignes d'un bloc de données à l'aide de la méthode loc() , vous devez spécifier les étiquettes correspondant aux lignes que vous souhaitez sélectionner.

 some_rows = students_df.loc[['Bob','Dave','Fanny']] print(some_rows)
quelques lignes

Si les lignes du bloc de données sont indexées à l'aide de la plage par défaut 0, 1, 2, jusqu'à numRows -1, l'utilisation iloc() et loc() est équivalente.

Sélectionnez des lignes et des colonnes à partir d'un DataFrame Pandas

Jusqu'à présent, vous avez appris à sélectionner des lignes ou des colonnes à partir d'un bloc de données pandas. Cependant, vous devrez parfois sélectionner un sous-ensemble de lignes et de colonnes. Alors, comment faites-vous? Vous pouvez utiliser les iloc() et loc() dont nous avons parlé.

Par exemple, dans l'extrait de code ci-dessous, nous sélectionnons toutes les lignes et colonnes aux index 2 et 3.

 subset_df1 = students_df.iloc[:,[2,3]] print(subset_df1)
sous-ensemble de trame de données

L'utilisation de start:stop crée une tranche de start jusqu'à mais sans inclure stop . Ainsi, lorsque vous ignorez les valeurs de start et stop , lorsque vous ignorez les valeurs de début et de fin, la tranche commence au début et s'étend jusqu'à la fin du bloc de données, en sélectionnant toutes les lignes.

Lorsque vous utilisez la méthode loc() , vous devez transmettre les étiquettes des lignes et des colonnes que vous souhaitez sélectionner, comme indiqué :

 subset_df2 = students_df.loc[['Amy','Evelyn'],['Week1','Week3']] print(subset_df2)
df-sous-ensemble

Ici, le dataframe subset_df2 contient l'enregistrement d'Amy et Evelyn pour Week1 et Week3.

Conclusion

Voici un bref aperçu de ce que vous avez appris dans ce didacticiel :

  • Après avoir installé pandas, vous pouvez l'importer sous l'alias pd . Pour créer un objet de cadre de données pandas, vous pouvez utiliser le pd.DataFrame(data) , où data fait référence au tableau à N dimensions ou à un itérable contenant les données. Vous pouvez spécifier les étiquettes de ligne et d'index et de colonne en définissant respectivement les paramètres facultatifs d'index et de colonnes.
  • L'utilisation pd.read_csv(path-to-the-file) lit le contenu du fichier dans une trame de données.
  • Vous pouvez appeler la méthode info() sur l'objet de bloc de données pour obtenir des informations sur les colonnes, le nombre de valeurs manquantes, les types de données et la taille du bloc de données.
  • Pour sélectionner une seule colonne, utilisez df_name[col_name] , et pour sélectionner plusieurs colonnes, une colonne particulière, df_name[[col1,col2,...,coln]] .
  • Vous pouvez également sélectionner des colonnes et des lignes à l'aide des méthodes loc() et iloc() .
  • Alors que la méthode iloc() prend l'index (ou la tranche d'index) des lignes et des colonnes à sélectionner, la méthode loc() prend les étiquettes de ligne et de colonne.

Vous trouverez les exemples utilisés dans ce didacticiel dans ce notebook Colab.

Ensuite, consultez cette liste de cahiers collaboratifs de science des données.