webentwicklung-frage-antwort-db.com.de

Lesen der Json-Datei als Pandas Dataframe-Fehler

Ich habe eine Json-Datei wie folgt. Es ist eine Liste von Diktaten. 

[{"city": "ab", "trips": 4, "date": "2014-01-25", "value": 4.7, "price": 1.1, "request_date": "2014-06-17", "medium": "iPhone", "%price": 15.4, "type": true, "Weekly_pct": 46.2, "avg_dist": 3.67, "avg_price": 5.0}, {"city": "bc", "trips": 0, "date": "2014-01-29", "value": 5.0, "price": 1.0, "request_date": "2014-05-05", "medium": "Android", "%price": 0.0, "type": false, "weekly_pct": 50.0, "avg_dist": 8.26, "avg_price": 5.0}.....]

Wenn ich das hier gelesen habe: 

data=pd.read_json('dataset.json')

Ich erhalte folgende Fehlermeldung: 

ValueError: Erwartetes Objekt oder Wert

Das habe ich auch ausprobiert: 

from ast import literal_eval

with open('dataset.json') as f:
    data = literal_eval(f.read())

df = pd.DataFrame(data)

Es gibt den folgenden Fehler: 

ValueError: fehlerhafte Zeichenfolge

Bearbeiten: 

Sogar Json.loads funktioniert nicht. Versuchte das: 

import json
data=json.loads('dataset.json')

ValueError: Es konnte kein JSON-Objekt dekodiert werden

Die Json-Datei ist 13,5 MB groß, scheint jedoch riesige Datenmengen zu haben. 

15
Baktaawar

Ich denke, Sie können das Modul json zum Lesen von file.json und dann DataFrame constructor verwenden

import pandas as pd
import json

with open('file.json') as f:
   data = json.load(f)
print data
[{u'city': u'ab', u'medium': u'iPhone', u'request_date': u'2014-06-17', u'price': 1.1, u'Weekly_pct': 46.2, u'value': 4.7, u'%price': 15.4, u'avg_price': 5.0, u'date': u'2014-01-25', u'avg_dist': 3.67, u'type': True, u'trips': 4}, {u'city': u'bc', u'medium': u'Android', u'request_date': u'2014-05-05', u'price': 1.0, u'weekly_pct': 50.0, u'value': 5.0, u'%price': 0.0, u'avg_price': 5.0, u'date': u'2014-01-29', u'avg_dist': 8.26, u'type': False, u'trips': 0}]

print pd.DataFrame(data)

   %price  Weekly_pct  avg_dist  avg_price city        date   medium  price  \
0    15.4        46.2      3.67        5.0   ab  2014-01-25   iPhone    1.1   
1     0.0         NaN      8.26        5.0   bc  2014-01-29  Android    1.0   

  request_date  trips   type  value  weekly_pct  
0   2014-06-17      4   True    4.7         NaN  
1   2014-05-05      0  False    5.0        50.0  
12
jezrael

Sie müssen Pandas mitteilen, dass die Formatierung "aufzeichnet" (wobei JSON wie eine Liste von Wörterbüchern erscheint) in datasets.json verwendet wird.

res = pd.read_json('input/dataset.json', orient='records')

print(res.iloc[:, :5])
   %price  Weekly_pct  avg_dist  avg_price city
0    15.4        46.2      3.67          5   ab
1     0.0         NaN      8.26          5   bc
3
Brad Solomon

Ich hatte den gleichen Fehler. Es stellt sich heraus, dass die Datei nicht gefunden wurde. Ich habe den Pfad geändert und pd.read_json hat gut funktioniert. In Bezug auf json.loads könnte das hilfreich sein.

2
BeeCee

Folgendes hat bei mir funktioniert, als pd.read_json fehlgeschlagen ist: Datei öffnen, mit normalem json.load laden und dann in einen pandas dataframe laden.

    import pandas as pd
    import json

    openfile=open('file.json')
    jsondata=json.load(openfile)
    df=pd.DataFrame(jsondata)

    openfile.close()
    print(df)
1
embulldogs99