English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

DataFrame Pandas

   Basic operations of Pandas DataFrame

DataFrame is a two-dimensional data structure, that is, data is aligned in rows and columns in tabular form.

DataFrame functions

Potential columns are of different types Variable size Labeled axis (rows and columns) Arithmetic operations can be performed on rows and columns

Structure

pandas.Series

The structure of Series is as follows:

Let's assume we are creating a DataFrame with student data.

We can consider it as a SQL table or an electronic spreadsheet data representation.

pandas.DataFrame

The following constructors can be used to create a pandas DataFrame-

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

Parameter description:

data: Data is taken in various forms, such as ndarray, series, mapping, list, dict, constants, and another DataFrame. index: For row labels, if no index is passed, the index used for the result frame is Optional Default np.arange(n). columns: pour les étiquettes de colonnes, la syntaxe par défaut est optionnelle]}-np.arange(n). Ce n'est le cas que si aucun index n'est fourni. dtype: type de données de chaque colonne. copy: Si la valeur par défaut est False, cette commande (ou toute autre commande de cette commande) est utilisée pour copier les données.

Créer un DataFrame

Il est possible de créer un DataFrame pandas à partir de diverses entrées.-

Lists dictionnaire Séries Numpy ndarrays Un autre DataFrame

Dans la partie suivante de ce chapitre, nous verrons comment utiliser ces entrées pour créer des DataFrame.

Créer un DataFrame vide

Il est possible de créer un DataFrame de base à partir d'un DataFrame vide.

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 df = pd.DataFrame()
 print(df)

Résultat de l'exécution :

 DataFrame vide
 Columns: []
 Index: []

Créer un DataFrame à partir de Lists

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = [1,2,3,4,5]}
 df = pd.DataFrame(data)
 print(df)

Résultat de l'exécution :

 0
 0 1
 1 2
 2 3
 3 4
 4 5
 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = [['Alex',10],['Bob',12],['Clarke',13]}
 df = pd.DataFrame(data,columns=['Nom','Âge'])
 print(df)

Résultat de l'exécution :

       Nom     Âge
 0     Alex     10
 1     Bob      12
 2     Clarke   13
 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = [['Alex',10],['Bob',12],['Clarke',13]}
 df = pd.DataFrame(data,columns=['Nom','Âge'],dtype=float)
 print df

Résultat de l'exécution :

 
      Nom   Âge
 0    Alex   10.0
 1    Bob    12.0
 2    Clarke 13.0
注意:Le paramètre dtype change le type de la colonne Âge en flottant.

de ndarray / Liste de Dict pour créer un DataFrame

La longueur de tous les ndarray doit être la même. Si l'index est fourni, la longueur de l'index doit être égale à la longueur du tableau.
Si aucun index n'est fourni, l'index par défaut sera range(n), où n est la longueur du tableau.

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = {'Nom':['Tom', 'Jack', 'Steve', 'Ricky'],'Âge':[,28,34,29,42]}
 df = pd.DataFrame(data)
 print(df)

Résultat de l'exécution :

 
    Âge   Nom
 0   28   Tom
 1   34   Jack
 2   29   Steve
 3   42   Ricky
注意:conformé à la valeur 0、1、2、3Ils sont assignés par défaut aux objets en utilisant une gamme de fonctions (n).

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = {'Nom':['Tom', 'Jack', 'Steve', 'Ricky'],'Âge':[,28,34,29,42]}
 df = pd.DataFrame(data, index=['rang1','rang2','rang3','rang4'])
 print(df)

Résultat de l'exécution :

 
       Âge Nom
 rank1 28 Tom
 rank2 34 Jack
 rank3 29 Steve
 rank4 42 Ricky
注意:index参数为每行分配一个索引。

从字典列表创建DataFrame

字典列表可以作为输入数据传递以创建DataFrame。默认情况下,字典键被用作列名。
下面的示例演示如何通过传递字典列表来创建DataFrame。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
 df = pd.DataFrame(data)
 print(df)

Résultat de l'exécution :

     a b c
 0 1 2 NaN
 1 5 10 20.0
注意:NaN(非数字)会附加在缺失区域中。

下面的示例演示如何通过传递字典列表和行索引来创建DataFrame。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
 df = pd.DataFrame(data, index=['first', 'second'])
 print(df)

Résultat de l'exécution :

          a b c
 first 1 2 NaN
 second 5 10 20.0

下面的示例演示如何创建包含字典,行索引和列索引的列表的DataFrame。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 import pandas as pd
 data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
 # 有两个列索引,值与字典键相同
 df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])
 # 有两个列索引
 df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])1'])
 print(df1)
 print(df2)

Résultat de l'exécution :

 #df1 output
       a b
 first 1 2
 second 5 10
 #df2 output
       a b1
 first 1 NaN
 second 5 NaN
注意:df2 DataFrame是使用除字典键以外的列索引创建的;因此,将NaN附加到位。而df1是使用与字典键相同的列索引创建的,因此添加了NaN。

从Dict Series创建DataFrame

可以传递系列字典以形成DataFrame。结果索引是所有通过的系列索引的并集。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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)

Résultat de l'exécution :

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

对于第一个系列,没有传递标签'd',但是结果是,对于d标签,附加了NaN。
现在让我们通过示例了解列的选择,添加和删除。

列查询

我们将从DataFrame中选择一列来了解这一点。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 
 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'])

Résultat de l'exécution :

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

列添加

我们将通过在现有数据框中添加新列来了解这一点。

# Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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
 #通过传递新序列,向具有列标签的现有 DataFrame 对象添加新列
 print ("通过作为 Series 传递添加新列:")
 df['three']=pd.Series([10,20,30],index=['a','b','c'])
 print df
 print ("使用 DataFrame 中的现有列添加新列:")
 df['four']=df['one']+df['three']
 print(df)

Résultat de l'exécution :

 通过作为 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
 使用 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

列删除

可以删除或弹出列;让我们以一个实例来了解如何。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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)

Résultat de l'exécution :

 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

行查询、添加和删除

现在,我们将通过示例了解行的选择,添加和删除。让我们从选择的概念开始。

按标签查询

可以通过将行标签传递给loc函数来选择行。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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'])

Résultat de l'exécution :

 
   one 2.0
 two 2.0
 Name: b, dtype: float64

结果是一系列带有标签作为DataFrame列名称的系列。并且,系列的名称是用来检索它的标签。

通过整数位置查询

结可以通过将整数位置传递给iloc函数来选择行。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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])

Résultat de l'exécution :

 
   one 3.0
 two 3.0
 Name: c, dtype: float64

切片行

可以使用 ':' 运算符选择多行。

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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])

Résultat de l'exécution :

 
     one two
 c 3.0 3
 d NaN 4

Ajout de lignes

Ajouter de nouvelles lignes au DataFrame en utilisant la fonction append. Cette fonction ajoute des lignes à la fin.

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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)

Résultat de l'exécution :

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

Suppression des lignes

Supprimer les lignes à partir du DataFrame en utilisant les étiquettes d'index. Si les étiquettes sont répétées, plusieurs lignes seront supprimées.
Si vous observez que, dans l'exemple ci-dessus, les étiquettes sont répétées. Supprimons une étiquette, et voyons combien de lignes seront supprimées.

 # Fichier : pandas.py
 # Auteur par : fr.oldtoolbag.com 
 # Importer le paquet de dépendance pandas et l'aliaser
 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)
 # Supprimer les lignes avec l'étiquette 0
 df = df.drop(0)
 print(df)

Résultat de l'exécution :

 
     a b
 1 3 4
 1 7 8

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