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

Concaténation Pandas

Exemple d'opération de connexion Pandas

Pandas offre diverses fonctionnalités permettant de combiner facilement des objets Series, DataFrame et Panel.

 pd.concat(objs,axis=0,join='outer',join_axes=None,
 ignore_index=False)

objs − C'est une séquence de Series ou une carte, un objet DataFrame ou Panel. axis − {0,1,...}, par défaut 0. C'est l'axe à concaténer. join − {'inner', 'outer'}, par défaut 'outer'. Comment traiter les indices sur d'autres axes. Externe pour la fusion, interne pour la croisée. ignore_index − Boolean, par défaut False. Si True, n'utilisez pas les valeurs d'index sur l'axe de concaténation. L'axe de résultat sera marqué comme 0, ... , n-1。 join_axes − C'est une liste d'indices. Utilisé pour d'autres (n-1)Index spécifique de l'axe, plutôt que de s'exécuter à l'intérieur/Logique de configuration externe.

Objets de connexion

La fonction CONCAT effectue toutes les opérations de concaténation le long des axes. Laissons-nous créer différents objets et les assembler.

 import pandas as pd
 one = pd.DataFrame({
    'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id': ['sous1','sous2','sous4','sous6','sous5'],
    'Marks_scored':['98,90,87,69,78])},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id': ['sous2','sous4','sous3','sous6','sous5'],
    'Marks_scored':['89,80,79,97,88])},
    index=[1,2,3,4,5])
 print(pd.concat([one,two])))

Résultat de l'exécution suivant :

    Marks_scored     Name   subject_id
1             98     Alex         sub1
2             90      Amy         sub2
3             87    Allen4
4             69    Alice6
5             78   Ayoung5
1             89    Billy2
2             804
3             79     Bran3
4             97    Bryce6
5             88    Betty5

Supposons que nous voulions associer des clés spécifiques à chaque segment d'un DataFrame découpé. Nous pouvons le faire en utilisant le paramètre keys-

 import pandas as pd
 one = pd.DataFrame({
    'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id': ['sous1','sous2','sous4','sous6','sous5'],
    'Marks_scored':['98,90,87,69,78])},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id': ['sous2','sous4','sous3','sous6','sous5'],
    'Marks_scored':['89,80,79,97,88])},
    index=[1,2,3,4,5])
 print(pd.concat([one,two],keys=['x','y']))

Résultat de l'exécution suivant :

x  1  98    Alex1
   2  902
   3  87    Allen4
   4  69    Alice6
   5  78    Ayoung5
y  1  89    Billy2
   2  804
   3  79    Bran3
   4  97    Bryce6
   5  88    Betty5

Les indices du résultat sont redondants ; chaque index est répété.

Si l'objet de résultat doit suivre son propre index, mettez ignore_index à True.

 import pandas as pd
 one = pd.DataFrame({
    'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id': ['sous1','sous2','sous4','sous6','sous5'],
    'Marks_scored':['98,90,87,69,78])},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id': ['sous2','sous4','sous3','sous6','sous5'],
    'Marks_scored':['89,80,79,97,88])},
    index=[1,2,3,4,5])
 print(pd.concat([one,two],keys=['x','y'],ignore_index=True))

Résultat de l'exécution suivant :

    Marks_scored
0             98     Alex          sous1
1             90      Amy          sous2
2             87    Allen          sous4
3             69    Alice          sous6
4             78   Ayoung          sous5
5             89    Billy          sous2
6             80    Brian          sous4
7             79     Bran          sous3
8             97    Bryce          sous6
9             88    Betty          sous5

Attention, l'index est complètement modifié et les clés sont également remplacées.

Si vous devez suivre l'axe = 1Ajouter deux objets, cela ajoutera une nouvelle colonne.

 import pandas as pd
 one = pd.DataFrame({
    'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id': ['sous1','sous2','sous4','sous6','sous5'],
    'Marks_scored':['98,90,87,69,78])},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id': ['sous2','sous4','sous3','sous6','sous5'],
    'Marks_scored':['89,80,79,97,88])},
    index=[1,2,3,4,5])
 print(pd.concat([one,two],axis=1))

Résultat de l'exécution suivant :

    Marks_scored
1           98      Alex1         89         Billy2
2           902         804
3           87     Allen4         79          Bran3
4           69     Alice6         97         Bryce6
5           78    Ayoung5         88         Betty5

Utilisation de append pour la concaténation

Concat utile est un raccourci pratique pour les méthodes append sur Series et DataFrame. Ces méthodes existent avant concat. Elles se connectent le long de l'axe = 0, c'est-à-dire l'index-

 import pandas as pd
 one = pd.DataFrame({
    'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id': ['sous1','sous2','sous4','sous6','sous5'],
    'Marks_scored':['98,90,87,69,78])},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id': ['sous2','sous4','sous3','sous6','sous5'],
    'Marks_scored':['89,80,79,97,88])},
    index=[1,2,3,4,5])
 print(one.append(two))

Résultat de l'exécution suivant :

    Marks_scored
1           98      Alex1
2           902
3           87     Allen4
4           69     Alice6
5           78    Ayoung5
1           89     Billy2
2           80     Brian      sous4
3           79      Bran      sous3
4           97     Bryce      sous6
5           88     Betty      sous5

Cette fonction supplémentaire peut prendre plusieurs objets, ainsi que-

 import pandas as pd
 one = pd.DataFrame({
    'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id': ['sous1','sous2','sous4','sous6','sous5'],
    'Marks_scored':['98,90,87,69,78])},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id': ['sous2','sous4','sous3','sous6','sous5'],
    'Marks_scored':['89,80,79,97,88])},
    index=[1,2,3,4,5])
 print(one.append([two,one,two]))

Résultat de l'exécution suivant :

    Marks_scored   Nom    subject_id
1           98     Alex          sous1
2           90      Amy          sous2
3           87    Allen          sous4
4           69    Alice          sous6
5           78   Ayoung          sous5
1           89    Billy          sous2
2           80    Brian          sous4
3           79     Bran          sous3
4           97    Bryce          sous6
5           88    Betty          sous5
1           98     Alex          sous1
2           90      Amy          sous2
3           87    Allen          sous4
4           69    Alice          sous6
5           78   Ayoung          sous5
1           89    Billy          sous2
2           80    Brian          sous4
3           79     Bran          sous3
4           97    Bryce          sous6
5           88    Betty          sous5

Séquence temporelle

Pandas fournit un outil puissant pour gérer les données séquentielles, en particulier dans le domaine financier. Lorsque nous traitons des données séquentielles, nous rencontrons souvent les situations suivantes :

Générer une séquence temporelle Convertir une séquence temporelle en une fréquence différente

Fournit un ensemble de outils relativement compacts et indépendants pour exécuter ces tâches.

Obtenir l'heure actuelle

datetime.now()Vous fournir la date et l'heure actuelles.

 import pandas as pd
 print(pd.datetime.now())

Résultat de l'exécution suivant :

2017-05-11 06:10:13.393147

Créer un timestamp

Les données de timestamp sont le type de données séquentielles de base qui associe des valeurs à des points temporels. Pour les objets Pandas, cela signifie utiliser des points temporels. Laissons-nous en donner un exemple-

import pandas as pd
print(pd.Timestamp('2017-03-01))

Résultat de l'exécution suivant :

2017-03-01 00:00:00

Il est également possible de convertir des entiers ou des flottants en temps. Leur unité par défaut est le nanoseconde (puisque c'est ainsi que les timestamps sont stockés). Cependant, l'époque est généralement stockée dans une autre unité spécifiée. Voici un autre exemple

import pandas as pd
print(pd.Timestamp(1587687255,unit='s'))

Résultat de l'exécution suivant :

 2020-04-24 00:14:15

Création de la plage de temps

import pandas as pd
print(pd.date_range("11:00", "13:3"0", freq="3).time)

Résultat de l'exécution suivant :

 [datetime.time(11, 0) datetime.time(11, 3) datetime.time(12, 0)
 datetime.time(12, 3) datetime.time(13, 0) datetime.time(13, 3, 0)

Changement de fréquence de temps

import pandas as pd
print(pd.date_range("11:00", "13:30", freq="H").time)

Résultat de l'exécution suivant :

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)

Conversion en timestamp

Pour convertir une série ou une liste d'objets de date similaires (par exemple, des chaînes, des époques ou des mélanges), vous pouvez utiliser la fonction to_datetime. Lors de la transmission, elle retourne une Series (ayant le même index) et les listes similaires à des listes sont converties en DatetimeIndex. Regardons l'exemple suivant-

import pandas as pd
print(pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None)))

Résultat de l'exécution suivant :

 0 2009-07-31
 1 2010-01-10
 2 NaT
 dtype: datetime64[ns]

NaT signifie que ce n'est pas une date (équivalent à NaN)

Laissons nous donner un autre exemple.

import pandas as pd
print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))

Résultat de l'exécution suivant :

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns], freq=None)