J'ai un Dataframe dans Pandas: Lorsque j'essaie de sauvegarder ceci sur le disque: p> i get: p> pourquoi? p> c'est tout avec des pandas 0.11 et la dernière version stable d'Ipython, Python et HDF5. P> P>
4 Réponses :
HDF5 a une limite d'en-tête de 64 Ko pour toutes les métadonnées des colonnes. Ceci inclut le nom, les types, etc. Lorsque vous allez environ 2000 colonnes, vous manquerez d'espace pour stocker toutes les métadonnées. C'est une limitation fondamentale des pytables. Je ne pense pas qu'ils feront des solutions de contournement de leur côté à tout moment. Vous devrez soit diviser la table ou choisir un autre format de stockage. P>
Merci @ brianwang0. Considérant mon problème, avez-vous des suggestions d'alternatives à HDF5?
Vous souciez-vous de l'interrogation ou de l'appépendabilité ou de la compressibilité? Essayez d'appeler my_df.to_hdf (nom_do_name, 'my_df', format = 'f') code>. Je ne suis pas un expert en pytables, mais cela a fonctionné pour moi quand j'avais énormément de colonnes. D'une manière ou d'une autre Fixe i> Format n'a pas cette limitation comme format Table i>. C'était la solution la plus facile pour moi.
Ou vous pouvez diviser la table, comme dans Créer plusieurs dataframes sur un fichier de données. Chaque Dataframe a un sous-ensemble de toutes les colonnes. Enregistrez chaque Dataframe dans un HDF5Store. Ou écrivez-le simplement à un texte simple CSV, si vous voulez simplement la solution la plus simple. Encore une fois, je ne suis pas un expert. Quelqu'un d'autre pourrait probablement donner une meilleure suggestion que moi.
A partir de 2014, le HDF est Mise à jour
If you are using HDF5 1.8.0 or previous releases, there is a limit on the number of fields you can have in a compound datatype. This is due to the 64K limit on object header messages, into which datatypes are encoded. (However, you can create a lot of fields before it will fail. One user was able to create up to 1260 fields in a compound datatype before it failed.)
Bien que ce fil ait plus de 5 ans, le problème est toujours pertinent. Il n'est toujours pas possible d'enregistrer un fichier de données avec plus de 2000 colonnes comme une table dans un HDFstore. En utilisant Voici une fonction qui divise le Dataframe en plus petits et les stocke comme tables séparées. En outre, un Dataframes stockés dans un HDFStore avec le La fonction ci-dessus peut être lue avec la fonction suivante. p> format = 'corrigé' code> n'est pas une option si on veut choisir les colonnes à lire à partir du HDFStore ultérieurement.
pandas.series code> est mis à la HDFStore contenant les informations à quel tableau une colonne appartient une colonne. P>
###USE get_weights AND set_weights TO SAVE AND LOAD MODEL, RESPECTIVELY. ############################################################################## #Assuming that this is your model architecture. However, you may use #whatever architecture, you want to (big or small; any). def mymodel(): inputShape= (28, 28, 3); model= Sequential() model.add(Conv2D(20, 5, padding="same", input_shape=inputShape)) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(500)) model.add(Activation('relu')) model.add(Dense(2, activation= "softmax")) return model model.fit(....) #paramaters to start training your model ################################################################################ ################################################################################ #once your model has been trained, you want to save your model in your PC #use get_weights() command to get your model weights weigh= model.get_weights() #now, use pickle to save your model weights, instead of .h5 #for heavy model architectures, .h5 file is unsupported. pklfile= "D:/modelweights.pkl" try: fpkl= open(pklfile, 'wb') #Python 3 pickle.dump(weigh, fpkl, protocol= pickle.HIGHEST_PROTOCOL) fpkl.close() except: fpkl= open(pklfile, 'w') #Python 2 pickle.dump(weigh, fpkl, protocol= pickle.HIGHEST_PROTOCOL) fpkl.close() ################################################################################ ################################################################################ #in future, you may want to load your model back #use pickle to load model weights pklfile= "D:/modelweights.pkl" try: f= open(pklfile) #Python 2 weigh= pickle.load(f); f.close(); except: f= open(pklfile, 'rb') #Python 3 weigh= pickle.load(f); f.close(); restoredmodel= mymodel() #use set_weights to load the modelweights into the model architecture restoredmodel.set_weights(weigh) ################################################################################ ################################################################################ #now, you can do your testing and evaluation- predictions y_pred= restoredmodel.predict(X)
Cette réponse serait meilleure que vous avez ajouté une brève description de la manière dont il résout le problème!
Cette réponse est hors sujet. Un petit extrait runnable sur la manière de sauvegarder / charger un fichier de données de pandas au format de cornichon, ainsi qu'une discussion sur les compromis entre cornichons et HDF5 serait accueillie.
Le problème est votre index. sont-ils tous 0? C'est vraiment étrange. Pouvez-vous montrer un échantillon de votre cadre?
En général, vous voulez avoir beaucoup plus de lignes que de colonnes; HDF5 est basé sur la ligne. Essayez de stocker la transpose de votre cadre