2015-12-16 6 views
1

Utilisation python 2.7 et la bibliothèque de jsonpickle et pandas I sauvé un certain nombre de tweets à un fichier .txt en utilisant jsonfile.write(jsonpickle.encode(tweets._json,unpicklable=False)+'\n') qui code la valeur de json du tweet en utilisant le paquet jsonpickleKeyError lecture tweets json_pickle (d) en trame de données à l'aide de read_pickle

lorsque je tente de lire le fichier txt dans une trame de données de pandas géants dans un script différent en utilisant tester = pandas.read_pickle(fileToProcess)

appel le plus récent de mon retraçage est

File "C:\Python27\lib\pickle.py", line 858, in load dispatchkey KeyError: '{'

Je reçois la même erreur avec un certain nombre de fichiers que j'ai créés. Voici un exemple de fichier de 3,8 Mo de taille Sample Tweets File Je ne connais pas encore les fichiers json, mais un expert en panda ou en pickle peut-il m'aider à convertir mes tweets en données?

Répondre

1

La méthode read_pickle est destinée à désérialiser les données créées avec le module de décapage, par ex. données sérialisées avec to_picke méthode de Series, DataFrames ou Panel. Comme montré dans this answer. Si vous utilisez jsonpickle.encode, vous devez utiliser la méthode double fournie par la bibliothèque, jsonpickle.decode pour désérialiser vos données.

En général, je pense que vous êtes mieux d'utiliser le mécanisme de sérialisation de pandas.

Mais si vous voulez trop mal utiliser jsonpickle:

  1. Notez les points suivants de la documentation,

    If you will never need to load (regenerate the Python class from JSON), you can pass in the keyword unpicklable=False

Ainsi, vous shoudn't passk unpicklable=False au encode methdod.

  1. Vous semblez enregistrer chaque objet sur une ligne de votre fichier, vous devriez donc le faire.

Quelque chose le long de ces lignes,

tweets = [] 
for line in fileToProcess: 
    line = line[:-1] # Drop '\n' char 
    tweets.append(jsonpickle.decode(line)) 
+0

Merci pour votre réponse et des conseils. Si je voulais aboutir à une base de données pandas, recommanderiez-vous une structure de données différente à utiliser à la place du tableau après décodage (la dernière ligne de la boucle devrait-elle lire tweets.append (jsonpickle.decode (line))? – mobcdi

+0

Fixe le nom de la variable dans la partie 'jsonpicke.decode' Si vous avez vos données comme json et que vous voulez les convertir en' DataFrame', cela ne veut pas ['pandas.read_json'] (http: //pandas.pydata. org/pandas-docs/version/0.17.0/generated/pandas.read_json.html) faites ce que vous voulez, vous pouvez enregistrer les données sous forme de fichier et les traiter ensuite avec des pandas. – memoselyk