2016-04-25 19 views
7

के रूप में जेसन फ़ाइल को पढ़ना मेरे पास एक जेसन फ़ाइल है। यह डिक्ट्स की एक सूची है।पांडस डेटाफ्रेम त्रुटि

[{"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}.....] 

जब मैं यह पढ़ इस का उपयोग करते हुए:

निम्न त्रुटि
data=pd.read_json('dataset.json') 

मैं हो:

ValueError: Expected object or value

मैं यह भी कोशिश की:

from ast import literal_eval 

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

df = pd.DataFrame(data) 

यह निम्न देता है त्रुटि:

ValueError: malformed string

संपादित करें:

भी Json.loads काम नहीं करता। इस कोशिश की:

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

ValueError: No JSON object could be decoded

JSON फ़ाइल 13.5MB है लेकिन यह डेटा की भारी मात्रा में है लगता है।

+0

क्या 'json.loads' काम करता है? ('आयात json' पहले ...) – IanS

+0

नहीं। मैंने कोशिश की कि उसने मुझे यह त्रुटि दी है। इसे जांच लिया है। – Baktaawar

+0

मुझे लगता है कि आपको इस उत्तर से फायदा हो सकता है: http://stackoverflow.com/a/20644150/5276797 – IanS

उत्तर

7

मुझे लगता है कि आप file.json पढ़ने के लिए मॉड्यूलर json उपयोग कर सकते हैं और फिर DataFrame constructor:

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 
+1

मुझे लगता है कि उदाहरण ओपी ने काम दिया है, और त्रुटि बड़ी फाइल में कहीं दफन है ... – IanS

+1

हमम, मैं नमूना के साथ पहली त्रुटि प्राप्त करें ('ValueError: अपेक्षित वस्तु या मान') और दूसरी त्रुटि (' ValueError: malformed string') भी। लेकिन मेरा समाधान बहुत अच्छी तरह से काम करता है। – jezrael

+0

ठीक है। मैंने अभी किया जो @jezrael ने सुझाव दिया था। और यह काम किया। हालांकि मेरा कॉलम ऑर्डर अलग है। शहर की तरह पहला कॉलम होना चाहिए, लेकिन यह अलग-अलग क्रम में आ रहा है क्योंकि वह भी हो रहा है। कोई विचार है कि कॉलम नामों का एक ही क्रम कैसे प्राप्त करें? – Baktaawar

0

आप पांडा है कि "रिकॉर्ड" स्वरूपण (जहां json शब्दकोशों की एक सूची की तरह दिखाई देता है) में प्रयोग किया जाता है, यह बताने की जरूरत है datasets.json

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 
+0

@IanS यह आपके प्रश्न का उत्तर दे सकता है कि क्यों 'read_json' अपने आप पर विफल रहता है –

संबंधित मुद्दे