Pandas Python - DataFrame

Une trame de données est une structure de données bidimensionnelle, c'est-à-dire que les données sont alignées de manière tabulaire en lignes et en colonnes.

Caractéristiques de DataFrame

  • Potentiellement, les colonnes sont de types différents
  • Taille - Mutable
  • Axes étiquetés (lignes et colonnes)
  • Peut effectuer des opérations arithmétiques sur les lignes et les colonnes

Structure

Supposons que nous créons une base de données avec les données des élèves.

Vous pouvez le considérer comme une table SQL ou une représentation de données de feuille de calcul.

pandas.DataFrame

Un DataFrame pandas peut être créé en utilisant le constructeur suivant -

pandas.DataFrame( data, index, columns, dtype, copy)

Les paramètres du constructeur sont les suivants -

Sr. Non Paramètre et description
1

data

les données prennent diverses formes comme ndarray, series, map, lists, dict, constants et également un autre DataFrame.

2

index

Pour les étiquettes de ligne, l'index à utiliser pour l'image résultante est facultatif Par défaut np.arange (n) si aucun index n'est passé.

3

columns

Pour les étiquettes de colonne, la syntaxe par défaut facultative est - np.arange (n). Cela n'est vrai que si aucun index n'est passé.

4

dtype

Type de données de chaque colonne.

5

copy

Cette commande (ou quoi que ce soit) est utilisée pour copier des données, si la valeur par défaut est False.

Créer DataFrame

Un pandas DataFrame peut être créé en utilisant diverses entrées telles que -

  • Lists
  • dict
  • Series
  • Numpy ndarrays
  • Un autre DataFrame

Dans les sections suivantes de ce chapitre, nous verrons comment créer un DataFrame en utilisant ces entrées.

Créer un DataFrame vide

Un DataFrame de base, qui peut être créé est un Dataframe vide.

Exemple

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df

Ses output est comme suit -

Empty DataFrame
Columns: []
Index: []

Créer un DataFrame à partir de listes

Le DataFrame peut être créé à l'aide d'une seule liste ou d'une liste de listes.

Exemple 1

import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df

Ses output est comme suit -

0
0    1
1    2
2    3
3    4
4    5

Exemple 2

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df

Ses output est comme suit -

Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

Exemple 3

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df

Ses output est comme suit -

Name     Age
0     Alex     10.0
1     Bob      12.0
2     Clarke   13.0

Note - Observez, le dtype paramètre change le type de colonne Age en virgule flottante.

Créer un DataFrame à partir de Dict of ndarrays / Lists

Tous les ndarraysdoit être de même longueur. Si l'index est passé, la longueur de l'index doit être égale à la longueur des tableaux.

Si aucun index n'est passé, alors par défaut, l'index sera range (n), où n est la longueur du tableau.

Exemple 1

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df

Ses output est comme suit -

Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky

Note- Respectez les valeurs 0,1,2,3. Il s'agit de l'index par défaut attribué à chacun à l'aide de la plage de fonctions (n).

Exemple 2

Créons maintenant un DataFrame indexé à l'aide de tableaux.

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df

Ses output est comme suit -

Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

Note - Observez, le index paramètre affecte un index à chaque ligne.

Créer un DataFrame à partir de la liste des dictionnaires

La liste des dictionnaires peut être transmise en tant que données d'entrée pour créer un DataFrame. Les clés du dictionnaire sont par défaut prises comme noms de colonne.

Exemple 1

L'exemple suivant montre comment créer un DataFrame en passant une liste de dictionnaires.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df

Ses output est comme suit -

a    b      c
0   1   2     NaN
1   5   10   20.0

Note - Observez, NaN (Not a Number) est ajouté dans les zones manquantes.

Exemple 2

L'exemple suivant montre comment créer un DataFrame en passant une liste de dictionnaires et les index de ligne.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df

Ses output est comme suit -

a   b       c
first   1   2     NaN
second  5   10   20.0

Exemple 3

L'exemple suivant montre comment créer un DataFrame avec une liste de dictionnaires, d'index de ligne et d'index de colonne.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2

Ses output est comme suit -

#df1 output
         a  b
first    1  2
second   5  10

#df2 output
         a  b1
first    1  NaN
second   5  NaN

Note- Remarquez que df2 DataFrame est créé avec un index de colonne autre que la clé de dictionnaire; ainsi, ajouté les NaN en place. Alors que df1 est créé avec des index de colonne identiques aux clés de dictionnaire, NaN est donc ajouté.

Créer un DataFrame à partir de Dict of Series

Dictionary of Series peut être transmis pour former un DataFrame. L'index résultant est l'union de tous les index de séries passés.

Exemple

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df

Ses output est comme suit -

one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

Note - Attention, pour la série un, il n'y a pas d'étiquette ‘d’ passé, mais dans le résultat, pour le d label, NaN est ajouté avec NaN.

Comprenons maintenant column selection, addition, et deletion à travers des exemples.

Sélection de colonne

Nous comprendrons cela en sélectionnant une colonne dans le DataFrame.

Exemple

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df ['one']

Ses output est comme suit -

a     1.0
b     2.0
c     3.0
d     NaN
Name: one, dtype: float64

Ajout de colonne

Nous comprendrons cela en ajoutant une nouvelle colonne à un bloc de données existant.

Exemple

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)

# Adding a new column to an existing DataFrame object with column label by passing new series

print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df

print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']

print df

Ses output est comme suit -

Adding a new column by passing as Series:
     one   two   three
a    1.0    1    10.0
b    2.0    2    20.0
c    3.0    3    30.0
d    NaN    4    NaN

Adding a new column using the existing columns in DataFrame:
      one   two   three    four
a     1.0    1    10.0     11.0
b     2.0    2    20.0     22.0
c     3.0    3    30.0     33.0
d     NaN    4     NaN     NaN

Suppression de colonne

Les colonnes peuvent être supprimées ou sautées; prenons un exemple pour comprendre comment.

Exemple

# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 
   'three' : pd.Series([10,20,30], index=['a','b','c'])}

df = pd.DataFrame(d)
print ("Our dataframe is:")
print df

# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df

# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df

Ses output est comme suit -

Our dataframe is:
      one   three  two
a     1.0    10.0   1
b     2.0    20.0   2
c     3.0    30.0   3
d     NaN     NaN   4

Deleting the first column using DEL function:
      three    two
a     10.0     1
b     20.0     2
c     30.0     3
d     NaN      4

Deleting another column using POP function:
   three
a  10.0
b  20.0
c  30.0
d  NaN

Sélection, ajout et suppression de lignes

Nous allons maintenant comprendre la sélection, l'ajout et la suppression de lignes à travers des exemples. Commençons par le concept de sélection.

Sélection par étiquette

Les lignes peuvent être sélectionnées en passant l'étiquette de ligne à un loc fonction.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.loc['b']

Ses output est comme suit -

one 2.0
two 2.0
Name: b, dtype: float64

Le résultat est une série avec des étiquettes comme noms de colonne du DataFrame. Et, le nom de la série est l'étiquette avec laquelle elle est récupérée.

Sélection par emplacement entier

Les lignes peuvent être sélectionnées en passant un emplacement entier à un iloc fonction.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.iloc[2]

Ses output est comme suit -

one   3.0
two   3.0
Name: c, dtype: float64

Trancher les lignes

Plusieurs lignes peuvent être sélectionnées à l'aide de l'opérateur ':'.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df[2:4]

Ses output est comme suit -

one  two
c  3.0    3
d  NaN    4

Ajout de lignes

Ajouter de nouvelles lignes à un DataFrame à l'aide du appendfonction. Cette fonction ajoutera les lignes à la fin.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2)
print df

Ses output est comme suit -

a  b
0  1  2
1  3  4
0  5  6
1  7  8

Suppression de lignes

Utilisez l'étiquette d'index pour supprimer ou supprimer des lignes d'un DataFrame. Si l'étiquette est dupliquée, plusieurs lignes seront supprimées.

Si vous observez, dans l'exemple ci-dessus, les étiquettes sont dupliquées. Laissez-nous déposer une étiquette et verrons combien de lignes seront supprimées.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2)

# Drop rows with label 0
df = df.drop(0)

print df

Ses output est comme suit -

a b
1 3 4
1 7 8

Dans l'exemple ci-dessus, deux lignes ont été supprimées car elles contiennent la même étiquette 0.