J'ai une matrice de données dans laquelle chaque ligne considérée comme série temps mais de longueur différente. C'est comme ça que cela ressemble à:
p>
in Texte: P>
0 1 2 3 4 5 6 7 8 9 P>
0 12 32 45 67 89 54 23.0 56.0 78.0 98.0 P>
1 34 76 34 89 34 3 Nan Nan Nan Nan P>
2 76 34 54 12 43 78 56.0 Nan Nan Nan P>
3 76 56 45 23 43 45 67.0 76.0 67.0 8.0 P>
4 87 9 9 0 89 90 6.0 89.0 Nan Nan P>
5 23 90 90 90 32 23 34 56.0 9.0 56.0 87.0 P>
6 23 56 34 3 5 8 7.0 6.0 98.0 NAN P>
7 32 23 34 6 65 78 67.0 87.0 89.0 87.0 P>
8 12 23 34 32 43 67 45.0 Nan Nan Nan P>
9 343 76 56 7 8 9 4.0 5.0 8.0 68.0 P> blockQuote>
J'avais essayé de lire des données à l'aide de Pandas avec code: p>
xxx pré> alors je veux passer chaque ligne de Datamatrix au modèle d'analyse de Datamatrix qui générera une seule valeur pour chaque fois à chaque foiseries et après avoir passé toutes les horaires, je vais obtenir un vecteur de fonctionnalité. P>
J'avais essayé d'implémenter à l'aide du code ci-dessous: P>
features=[] for i,j in timeseries.iterrows(): row=timeseries.iloc[i] model=AR(row.values) model_fit=model.fit() yhat=model_fit.predict(len(row),len(row)) features.append(yhat) fvector=pd.DataFrame(features) print(fvector)
3 Réponses :
Vous devez supprimer les nans et les remplacer avec 0 ou quelque chose d'autre:
timeseries.fillna(0, inplace=True) print(timeseries) features=[] for i,j in timeseries.iterrows(): row=timeseries.iloc[i] model=AR(row.values) model_fit=model.fit() yhat=model_fit.predict(len(row),len(row)) features.append(yhat) fvector=pd.DataFrame(features) print(fvector) 0 0 100.704274 1 0.000000 2 0.000000 3 -23.468840 4 19.943124 5 37.442981 6 5.771667 7 105.138431 8 0.000000 9 237.903666
Impossible de remplacer NAN avec une valeur. Est-il possible que je lisais les valeurs de chaque rangée jusqu'à ce que NAN se produise?
Votre exemple ne présente pas tous les détails nécessaires, par ex. tu as écrit
rien sur ar em>. Comme je l'ai compris, votre logiciel se plaint de Nan em> valeurs dans certaines lignes,
Donc, vous devriez: P> Un autre détail, cette fois-ci concernant la vitesse d'exécution, est que si vous ithétiez les lignes, alors: p> Modifiez votre code faire quelque chose comme ci-dessous: p> bien sûr, impression em> est uniquement à des fins de démonstration.
Déposez-le dans la version cible de votre code. P> Je doute sur la question de la substitution NAN EM> avec des zéros (comme proposé
dans l'autre réponse) est la bonne approche, car il est susceptible de "gâter"
quelque chose dans votre modèle. p> Si vous souhaitez traiter uniquement la partie "initiale" de la ligne actuelle, c'est-à-dire
jusqu'à la première nan em> (à l'exclusion), comme vous l'avez demandé dans votre commentaire,
Remplacez l'appel à drowna () em> avec: p> pour vérifier comment cela fonctionne, remplacez par E.G. le dernier nan em> dans la ligne avec index
1 em> avec une valeur finie et observe le résultat de cette ligne. P> P>
Edit h1>
Est-il possible que je lisais les valeurs de chaque rangée jusqu'à ce que NAN se produise? Et si oui, quelle sera l'approche d'elle?
Vous pouvez utiliser numpy et entrer les valeurs manquantes comme Par exemple: p> pour plus de détails, voir "href =" https://pandas.pydata.org/pandas-docs/ stable / user_guide / tisseries.html "rel =" NOFOollow NOREFERRER "> Documentation de la série chronologique Pandas. p> Si la fonction de modèle n'accepte vraiment aucune valeur manquante, vous devrez peut-être deviner quelque chose. Cela affectera bien sûr la fiabilité du modèle. Voir le Documentation Pandas , en particulier sur DF.FLAD () A >, et le Article Wikipedia sur l'imputation . P> Vous pouvez également extraire une seule série chronologique sans les valeurs manquantes de la trame de données ci-dessus, au cas où cela convient à votre modèle. Par exemple. la deuxième colonne: p> np.nan code>.
Ensuite, vous pouvez lire les données sous forme de tableau numpy, transposez-la (car dans Pandas, une série chronologique est censée être une colonne plutôt qu'une rangée), jeté sur un fichier de données, définissez un DateTimeindex et le prenez à partir de là.
S'il vous plaît ne postez pas d'images de vos données, partagez les données réelles pouvant être copiées.
Fait, merci pour la suggestion.
Remplissez les valeurs manquantes avant d'appliquer le modèle. Beaucoup de modèles de série de temps ne fonctionnent pas avec des valeurs manquantes comme NANS.
Non, je ne peux pas interpoler ou imputer les données de toute façon ... est-il possible d'analyser chaque rangée de manière autonome afin que NAN ne soit pas marqué par des pandas?