Chargement d'un fichier avec plus d'une ligne de JSON dans les Pandas
Je suis en train de lire dans un fichier JSON en Python pandas (0.14.0) bloc de données. Voici la première ligne du fichier JSON:
{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "P_Mk0ygOilLJo4_WEvabAA", "review_id": "OeT5kgUOe3vcN7H6ImVmZQ", "stars": 3, "date": "2005-08-26", "text": "This is a pretty typical cafe. The sandwiches and wraps are good but a little overpriced and the food items are the same. The chicken caesar salad wrap is my favorite here but everything else is pretty much par for the course.", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"}
Je suis en train de faire le suivant:df = pd.read_json(path)
.
J'obtiens l'erreur suivante (avec plein de sperme):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/d/anaconda/lib/python2.7/site-packages/pandas/io/json.py", line 198, in read_json
date_unit).parse()
File "/Users/d/anaconda/lib/python2.7/site-packages/pandas/io/json.py", line 266, in parse
self._parse_no_numpy()
File "/Users/d/anaconda/lib/python2.7/site-packages/pandas/io/json.py", line 483, in _parse_no_numpy
loads(json, precise_float=self.precise_float), dtype=None)
ValueError: Trailing data
Quel est le Trailing data
erreur? Comment dois-je le lire dans un bloc de données?
Suite à quelques suggestions, voici quelques lignes de la .fichier json:
{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "P_Mk0ygOilLJo4_WEvabAA", "review_id": "OeT5kgUOe3vcN7H6ImVmZQ", "stars": 3, "date": "2005-08-26", "text": "This is a pretty typical cafe. The sandwiches and wraps are good but a little overpriced and the food items are the same. The chicken caesar salad wrap is my favorite here but everything else is pretty much par for the course.", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"}
{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "TNJRTBrl0yjtpAACr1Bthg", "review_id": "qq3zF2dDUh3EjMDuKBqhEA", "stars": 3, "date": "2005-11-23", "text": "I agree with other reviewers - this is a pretty typical financial district cafe. However, they have fantastic pies. I ordered three pies for an office event (apple, pumpkin cheesecake, and pecan) - all were delicious, particularly the cheesecake. The sucker weighed in about 4 pounds - no joke.\n\nNo surprises on the cafe side - great pies and cakes from the catering business.", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"}
{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "H_mngeK3DmjlOu595zZMsA", "review_id": "i3eQTINJXe3WUmyIpvhE9w", "stars": 3, "date": "2005-11-23", "text": "Decent enough food, but very overpriced. Just a large soup is almost $5. Their specials are $6.50, and with an overpriced soda or juice, it's approaching $10. A bit much for a cafe lunch!", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"}
Cette .fichier json, je suis en utilisant contient un objet JSON dans chaque ligne que par la spécification.
J'ai essayé le jsonlint.com site web, comme l'a suggéré, et il donne le message d'erreur suivant:
Parse error on line 14:
...t7sRT4zwdbzQ8KQmw"}{ "votes": {
----------------------^
Expecting 'EOF', '}', ',', ']'
- Vous avez d'autres données dans le fichier qui ne fait pas partie de l'objet JSON.
- Ce n'est les quelques dernières lignes du fichier json ressembler?
- Alors que le json vous montrer, c'est valable, ce que vous devez faire en premier est exécuté jsonlint.com (ou un outil similaire), avant de perdre du temps sur des données non valides.
- Cet exemple lit très bien pour moi dans les pandas 0.16.0. Quelle est la version de pandas utilisez-vous?
- mp.__version__ est "0.14.0'
- mise à jour 0.16.0, il y a eu quelques corrections pour read_json.
- merci je vais le faire.
- vous chargez le fichier dans son intégralité ou chaque ligne individuellement? À partir de édité le post, il est clair que vous shouuld analyser chaque ligne individuellement ou de modifier votre fichier json comme ça: [ {...}, {..}, {...} ]
- Ghiban, je peux charger tout le fichier ou le lire en une ligne individuelle. Il semble que la conversion dans le format que vous avez mentionné, pourrait être un peu difficile car il y a plus de 5 millions de ces enregistrements.
Vous devez vous connecter pour publier un commentaire.
À partir de la version 0.19.0 de Pandas, vous pouvez utiliser le
lines
paramètre, comme ceci:lines
argument? github.com/pandas-dev/pandas/issues/15132Vous devez le lire ligne par ligne. Par exemple, vous pouvez utiliser le code suivant fourni par ryptophan sur reddit:
Le code suivant m'a aidé à charger le contenu JSON dans un dataframe:
J'ai eu un problème similaire.
Il s'avère que
pd.read_json(myfile.json)
va chercher dans le dossier parent automatiquement, mais il renvoie à cette "fuite de données d'erreur" si vous n'êtes pas dans le même dossier que le fichier.J'ai tout compris, parce que quand j'ai essayé de le faire avec
open('myfile.json', 'r')
, et j'ai eu unFileNotFound
d'erreur, donc j'ai vérifié les chemins.Je n'avais pas réussi à déplacer myfile.json dans le même dossier que mon portable.
De la modifier à
pd.read_json('../myfile.json')
simplement travaillé.