Comment créer une dataframe avec pandas sous python ?


Exemples de comment créer un tableau de données (ou "dataframe") avec pandas sous python:

Créer une simple data frame à partir d'une matrice

Importer les modules pandas et numpy:

>>> import pandas as pd
>>> import numpy as np

Soit la matrice 2D suivante:

\begin{equation}
data = \left( \begin{array}{ccc}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12
\end{array}\right)
\end{equation}

>>> data = np.arange(1,13)
>>> data = data.reshape(3,4)
>>> data
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

On peut alors donner des noms aux colonnes de la matrice

>>> columns = ['Home','Car','Sport','Food']

et aussi donner des noms aux lignes de la matrice:

>>> index = ['Alice','Bob','Emma']

puis créer une dataframe avec pandas:

>>> df = pd.DataFrame(data=data,index=index,columns=columns)
>>> df
       Home  Car  Sport  Food
Alice     1    2      3     4
Bob       5    6      7     8
Emma      9   10     11    12

Note: L'avantage d'utiliser une dataframe pandas par rapport aux matrices de numpy et de pouvoir ajouter des informations sur les données comme donner des noms aux colonnes et aux lignes (on peut alors sélectionner une colonne en utilisant son nom plutôt que son indice), et aussi de pouvoir ajouter des metadata.

On peut ne pas donner de noms pour les lignes de la dataframe, dans ce cas les lignes du tableau sont indexées par un entiers automatiquement:

>>> df = pd.DataFrame(data=data,columns=columns)
>>> df
   Home  Car  Sport  Food
0     1    2      3     4
1     5    6      7     8
2     9   10     11    12

Créer une data frame à partir d'un dictionnaire

Créer une dataframe à partir d'un dictionnaire python (méthode 1)

Pour créer une dataframe à partir d'un dictionnaire python :

d = {
    'Name': ['Ben', 'John', 'Emma', 'Zoe'],
    'Age': [40, 56, 34, 12]
}

une solution est de faire

import pandas as pd

df = pd.DataFrame(d)

donne

   Name  Age
0   Ben   40
1  John   56
2  Emma   34
3   Zoe   12

Créer une dataframe à partir d'un dictionnaire python (méthode 2)

Une autre solution consiste à utiliser pandas.DataFrame.from_dict

df = pd.DataFrame.from_dict(d)

print(df)

donne

   Name  Age
0   Ben   40
1  John   56
2  Emma   34
3   Zoe   12

L'avantage est d'utiliser des paramètres tels que "orient":

df = pd.DataFrame.from_dict(d, orient='index')

donne alors

        0     1     2    3
Name  Ben  John  Emma  Zoe
Age    40    56    34   12

Ajoutez des noms de colonne :

df = pd.DataFrame.from_dict(d, orient='index', columns=['User 1', 'User 2', 'User 3', 'User 4'])

donne

     User 1 User 2 User 3 User 4
Name    Ben   John   Emma    Zoe
Age      40     56     34     12

Ajouter une nouvelle ligne dans un dataframe

Autre exemple, ajoutez une nouvelle ligne dans un dataframe existant :

import pandas as pd

d = {
    'Name': ['Ben', 'John', 'Emma', 'Zoe'],
    'Age': [40, 56, 34, 12]
}

df = pd.DataFrame.from_dict(d)

    Name  Age
0   Ben   40
1  John   56
2  Emma   34
3   Zoe   12

Créer une nouvelle dataframe à partir d'un dictionnaire python

new_d = {
    'Name': ['Paula'],
    'Age': [67]
}

df_new_row = pd.DataFrame.from_dict(new_d)

Pour ajouter une nouvelle ligne, une solution consiste à utiliser concat() (voir Comment fusionner / concatener deux dataframes avec pandas en python ? et Comment créer une DataFrame vide avec pandas et la remplir ligne par ligne en python ?)

df = pd.concat([df,df_new_row], ignore_index=True)

donne

     Name  Age
0    Ben   40
1   John   56
2   Emma   34
3    Zoe   12
4  Paula   67

Corriger l'erreur "If using all scalar values, you must pass an index"

new_d = {
    'Name': 'Paula',
    'Age': 67
}

df_new_row = pd.DataFrame.from_dict(new_d)

donne

 ValueError: If using all scalar values, you must pass an index

C'est parce que les valeurs du dictionnaire new_d ne sont pas une liste.

Pour résoudre ce problème, ajoutez simplement [] :

new_d = {
    'Name': ['Paula'],
    'Age': [67]
}

df_new_row = pd.DataFrame.from_dict(new_d)

Créer une data frame à partir d'une liste de tuple

Exemple avec une liste de tuple:

>>> data = [(1,2,3,4),(5,6,7,8)]
>>> index = ['Alice','Bob']
>>> columns = ['Home','Car','Sport','Food']
>>> df = pd.DataFrame(data=data,index=index,columns=columns)
>>> df
       Home  Car  Sport  Food
Alice     1    2      3     4
Bob       5    6      7     8

Créer une data frame à partir d'un fichier ascii

On peut aussi utiliser read_csv() pour créer une dataframe:

>>> import pandas as pd
>>> df = pd.read_csv('myfile.csv', sep=",", header=None)
>>> df.head()

Voir aussi

Liens Site
Comment transformer une dataframe en dictionnaire avec pandas en python ? moonbooks.org
Comment ajouter une ligne à une dataframe avec pandas en python ? moonbooks.org
Comment fusionner / concatener deux dataframes avec pandas en python ? moonbooks.org
Comment avec pandas supprimer d'une data frame les lignes avec des valeurs en dessous et au dessus d'une valeur minimum et maximum ? moonbooks.org
Comment extraire en python le noms des colonnes d'un tableau de données (dataframe) avec pandas ? moonbooks.org
Comment obtenir la taille d'un tableau de données DataFrame avec pandas ? moonbooks.org
Comment supprimer une ou des lignes d'un tableau de données (DataFrame) avec pandas ? moonbooks.org
Comment renommer une colonne d'un tableau de données (DataFrame) avec pandas ? moonbooks.org
Comment supprimer une ou des colonnes d'un tableau de données (DataFrame) avec pandas ? moonbooks.org
Comment sélectionner une ou plusieurs lignes d'un tableau de données (DataFrame) avec pandas ? moonbooks.org
Filtrer les données manquantes (NAN, NULL) d'une DataFrame avec Pandas ? moonbooks.org
Comment ajouter des metadata à une data frame avec pandas sous python ? moonbooks.org
Comment sélectionner une ou plusieurs colonnes d'un tableau de données (ou DataFrame) avec pandas ? moonbooks.org
Comment obtenir les noms (titres, labels) associés aux lignes d'un tableau de données (dataframe) avec pandas ? moonbooks.org
Comment lire un fichier de données csv en python avec pandas ? moonbooks.org