복붙노트

[PYTHON] Python의 Pandas에 둘 이상의 JSON 라인이있는 파일로드하기

PYTHON

Python의 Pandas에 둘 이상의 JSON 라인이있는 파일로드하기

json 파일을 pandas 데이터 프레임으로 읽으려고합니다. 다음은 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

후행 데이터 오류 란 무엇입니까? 데이터 프레임을 어떻게 읽습니까?

편집하다: 몇 가지 제안 사항을 따르면 .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', '}', ',', ']'

해결법

  1. ==============================

    1.Pandas 버전 0.19.0부터 다음과 같이 lines 매개 변수를 사용할 수 있습니다.

    Pandas 버전 0.19.0부터 다음과 같이 lines 매개 변수를 사용할 수 있습니다.

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

    2.줄 단위로 읽어야합니다. 예를 들어 redyit에서 ryptophan이 제공 한 다음 코드를 사용할 수 있습니다.

    줄 단위로 읽어야합니다. 예를 들어 redyit에서 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)
    
  3. from https://stackoverflow.com/questions/30088006/loading-a-file-with-more-than-one-line-of-json-into-pythons-pandas by cc-by-sa and MIT license