পান্ডসে জেএসএনের একাধিক লাইনের সাথে একটি ফাইল লোড করা হচ্ছে


92

আমি পাইথন পান্ডাস (0.14.0) ডেটা ফ্রেমে JSON ফাইলে পড়ার চেষ্টা করছি। এখানে 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"}

আমি নিম্নোক্ত কাজ চেষ্টা করছি: df = pd.read_json(path)

আমি নিম্নলিখিত ত্রুটিটি পেয়েছি (সম্পূর্ণ ট্রেসব্যাক সহ):

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

Trailing dataত্রুটি কী ? আমি কীভাবে এটি একটি ডেটা ফ্রেমে পড়ব?

কিছু পরামর্শ অনুসরণ করে, এখানে .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"}

এই .json ফাইলটি আমি ব্যবহার করছি স্পেসিফিকেশন অনুসারে প্রতিটি লাইনে একটি করে JSON অবজেক্ট রয়েছে।

প্রস্তাবিত হিসাবে আমি jsonlint.com ওয়েবসাইট চেষ্টা করেছি এবং এটি নিম্নলিখিত ত্রুটি দেয়:

Parse error on line 14:
...t7sRT4zwdbzQ8KQmw"}{    "votes": {
----------------------^
Expecting 'EOF', '}', ',', ']'

4
আপনার কাছে ফাইলটিতে অতিরিক্ত ডেটা রয়েছে যা জেএসওএন অবজেক্টের অংশ নয়।
মার্টিজন পিটারস

জসন ফাইলের শেষ কয়েকটি লাইন দেখতে কেমন?
ব্রায়ান ওকলে

4
এই উদাহরণটি পান্ডাস 0.16.0 এ আমার জন্য সূক্ষ্মভাবে পড়ে। আপনি পান্ডার কোন সংস্করণ ব্যবহার করছেন?
অ্যান্ডি হেডেন

4
@ ব্যবহারকারী 62198 0.16.0 এ আপডেট করুন, পড়ার_জসনের জন্য কিছু সংশোধন হয়েছে।
অ্যান্ডি হেডেন

4
@ কর্নেল ঘিবান, আমি পুরো ফাইলটি লোড করতে পারি বা একটি পৃথক লাইনে পড়তে পারি। 5 মিলিয়নেরও বেশি রেকর্ড রয়েছে বলে আপনি উল্লিখিত বিন্যাসে রূপান্তর করা কিছুটা কঠিন হতে পারে।
ব্যবহারকারী 62198

উত্তর:


240

পান্ডার 0.19.0 সংস্করণ থেকে আপনি linesপ্যারামিটারটি ব্যবহার করতে পারেন :

import pandas as pd

data = pd.read_json('/path/to/file.json', lines=True)

linesযুক্তিটির সাথে সম্পর্কিত এই সমস্যাটির একটি সমাধান পেতে কীভাবে কোনও ধারণা ? github.com/pandas-dev/pandas/issues/15132
ছক

33

আপনি এটি লাইন লাইন পড়তে হবে। উদাহরণস্বরূপ, আপনার প্রদত্ত নিম্নলিখিত কোড ব্যবহার করতে পারেন ryptophan উপর ক্রেতা :

import pandas as pd

# read the entire file into a python array
with open('your.json', 'rb') as f:
    data = f.readlines()

# remove the trailing "\n" from each line
data = map(lambda x: x.rstrip(), data)

# each element of 'data' is an individual JSON object.
# i want to convert it into an *array* of JSON objects
# which, in and of itself, is one large JSON object
# basically... add square brackets to the beginning
# and end, and have all the individual business JSON objects
# separated by a comma
data_json_str = "[" + ','.join(data) + "]"

# now, load it into pandas
data_df = pd.read_json(data_json_str)

হাই, আমি আনস জসন ফাইল পড়ার চেষ্টা করছি এবং ডেটাফ্রেমে সঞ্চয় করি। যাইহোক, আমি যখন আপনার কোডটি ব্যবহার করেছি, তখন আমি একটি ত্রুটি পেয়েছি: "TypeError: সিকোয়েন্স আইটেম 0: প্রত্যাশিত স্ট্রিং উদাহরণ, বাইটস পাওয়া গেছে"। আপনি কি জানেন যে এতে কী ভুল হয়েছে?
এনজিওডিভু

3

নিম্নলিখিত কোডটি আমাকে একটিতে JSONসামগ্রী লোড করতে সহায়তা করেছে dataframe:

import json
import pandas as pd

with open('Appointment.json', encoding="utf8") as f:
    data = f.readlines()
    data = [json.loads(line) for line in data] #convert string to dict format
df = pd.read_json(data) # Load into dataframe

1

আমারও একই সমস্যা ছিল।

দেখা যাচ্ছে যে pd.read_json(myfile.json)প্যারেন্ট ফোল্ডারে স্বয়ংক্রিয়ভাবে অনুসন্ধান করবে তবে আপনি যদি ফাইলটির মতো একই ফোল্ডারে না থাকেন তবে এটি এই 'পেছনের ডেটা' ত্রুটিটি ফিরিয়ে দেয়।

আমি এটি বের করেছিলাম, কারণ যখন আমি এটি দিয়ে চেষ্টা করার চেষ্টা open('myfile.json', 'r')করেছি এবং আমি একটি FileNotFoundত্রুটি পেয়েছি , তাই আমি পথগুলি পরীক্ষা করেছি।

আমি আমার নোটবুকের মতো একই ফোল্ডারে মাইফাইল.জেসন সরানোতে ব্যর্থ হয়েছি।

pd.read_json('../myfile.json')সবেমাত্র কাজ করে এটিকে পরিবর্তন করা ।


4
এটি নির্বোধ যে এটি দেয় ValueError: Trailing dataযখন এটি দেওয়া উচিত FileNotFound। আমার সাথেও এটি ঘটেছিল।
প্রোগার্লএক্সএক্সএক্সও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.