web-dev-qa-db-ja.com

JSONファイルをpandas dataframe?

python 3.6を使用し、以下のコードを使用してjsonファイル(350 MB)をpandas dataframeとしてダウンロードしようとしています。ただし、次のエラーが表示されます。

data_json_str = "[" + ",".join(data) + "]
"TypeError: sequence item 0: expected str instance, bytes found

エラーを修正するにはどうすればよいですか?

import pandas as pd

# read the entire file into a python array
with open('C:/Users/Alberto/nutrients.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)
9
Alberto Alvarez

ファイルをバイナリ('rb')、バイトを取得します。どうですか:

with open('C:/Users/Alberto/nutrients.json', 'rU') as f:
1
Stephen Rauch

あなたのコードからは、JSONファイルを読み込んでいるように見えます。JSONファイルには、各行にJSONデータがあります。 read_json は、次のようなデータのlines引数をサポートします。

data_df = pd.read_json('C:/Users/Alberto/nutrients.json', lines=True)


削除する lines=True各行に個別のJSONオブジェクトではなく単一のJSONオブジェクトがある場合。

22
cs95

Jsonモジュールを使用すると、jsonをpythonオブジェクトに解析し、それからデータフレームを作成できます。

import json
import pandas as pd
with open('C:/Users/Alberto/nutrients.json', 'r') as f:
    data = json.load(f)
df = pd.DataFrame(data)

jSONオブジェクトのarrayに変換したい場合、これはあなたが望むことをするだろうと思います

import json
data = []
with open('nutrients.json', errors='ignore') as f:
    for line in f:
        data.append(json.loads(line))
print(data[0])
1
A.Emad