2 votes

Ajouter des tableaux à un tableau de données (python)

J'ai donc exécuté un modèle de série temporelle sur un petit ensemble de données de ventes et j'ai prévu les ventes pour les 12 prochaines périodes. Avec le code suivant :

 mod1=ARIMA(df1, order=(2,1,1)).fit(disp=0,transparams=True)
    y_future=mod1.forecast(steps=12)[0]

où df1 contient les valeurs des ventes, les mois étant l'indice. Je stocke maintenant les valeurs prédites de la manière suivante :

pred.append(y_future)

Je dois maintenant ajouter les valeurs prévues à l'ensemble de données original df1, de préférence avec le même index. J'essaie d'utiliser le code suivant :

df1.append(pred, ignore_index=False)

Mais j'obtiens l'erreur suivante :

TypeError: cannot concatenate a non-NDFrame object

J'ai essayé de convertir la variable pred en liste, puis de l'ajouter, mais en vain. Toute aide sera appréciée. Merci de votre aide.

2voto

saloua Points 842

Une solution pourrait être d'ajouter le nouveau tableau à votre dataFrame à la dernière position en utilisant df.loc

df.loc[len(df)] = your_array

Mais ce n'est pas efficace car si vous voulez le faire plusieurs fois, il faudra obtenir la longueur du DataFrame pour chaque nouvel ajout.

Une meilleure solution serait de créer un dictionnaire des valeurs à ajouter et de l'ajouter au dataFrame.

df = df.append(dict(zip(df.columns, your_array)), ignore_index=True)

0voto

Tarik Kranda Points 11

Vous pouvez ajouter vos résultats à une liste de dictionnaires, puis ajouter cette liste de dictionnaires à un cadre de données.

Supposons que vous souhaitiez ajouter vos résultats prévisionnels ARIMA à la fin de la base de données actuelle avec deux colonnes "datetime" (YYYY-MM-DD) et "value" respectivement.

Étapes à suivre

  • Commencez par trouver le jour maximum dans la colonne datetime de votre cadre de données actuel et convertissez-le en datetime. Nous voulons assigner des dates futures aux résultats de nos prévisions.
  • Créer une liste dictionnaire vide et, à l'intérieur d'une boucle, la remplir en incrémentant la valeur datetime d'un jour et placer un résultat prévisionnel par la suite.
  • Ajoutez cette liste de dictionnaires à votre cadre de données. N'oubliez pas de le réaffecter à lui-même en tant que valeur de gauche puisque la fonction append crée une copie du cadre de données des résultats ajoutés.
  • Réindexez votre cadre de données.

Code

lastDay = dfActualData[dfActualData['datetime'] == dfActualData['datetime'].max()].values[0][0]
dtLastDay = lastDay.to_pydatetime("%Y-%m-%d")

listdict = []
for i in range(len(results)):
    forecastedDate = dtLastDay + timedelta(days = i + 1)
    listdict.append({'datetime':forecastedDate , 'value':results[i]})

dfActualData= dfActualData.append(listdict, ignore_index=True)
dfActualData.reset_index(drop=True)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X