web-dev-qa-db-ja.com

pandas read_json: "すべてのスカラー値を使用する場合、インデックスを渡す必要があります"

私はパンダでJSONファイルをインポートするのに少し苦労しています。

import pandas as pd
map_index_to_Word = pd.read_json('people_wiki_map_index_to_Word.json')

これは私が得るエラーです:

ValueError: If using all scalar values, you must pass an index

ファイル構造は次のように簡素化されます。

{"biennials": 522004, "lb915": 116290, "shatzky": 127647, "woode": 174106, "damfunk": 133206, "nualart": 153444, "hatefillot": 164111, "missionborn": 261765, "yeardescribed": 161075, "theoryhe": 521685}

Courseraのワシントン大学の機械学習コースからです。ファイル here を見つけることができます。

20
Marco Fumagalli

試して

_ser = pd.read_json('people_wiki_map_index_to_Word.json', typ='series')
_

そのファイルには、値がスカラーであるキーと値のペアのみが含まれています。 ser.to_frame('count')でデータフレームに変換できます。

次のようなこともできます:

_import json
with open('people_wiki_map_index_to_Word.json', 'r') as f:
    data = json.load(f)
_

データは辞書になりました。次のようにデータフレームコンストラクターに渡すことができます。

_df = pd.DataFrame({'count': data})
_
25
ayhan

@ayhan言及として行うことができます。これは、列ベース形式を提供します

Method 1

または、以下に示すようにオブジェクトを[]( source )で囲むことにより、複数の値をロードして計画する場合に便利な行形式を提供できます。機械学習モデルにマトリックスを使用します。

df = pd.DataFrame([data])

Method 2

5
Adonis H.

何が起こっているのかと思います

map_index_to_Word = pd.read_json('people_wiki_map_index_to_Word.json')

jSONではなく文字列として読み取られている

{"biennials": 522004, "lb915": 116290, "shatzky": 127647, "woode": 174106, "damfunk": 133206, "nualart": 153444, "hatefillot": 164111, "missionborn": 261765, "yeardescribed": 161075, "theoryhe": 521685}

実際に

'{"biennials": 522004, "lb915": 116290, "shatzky": 127647, "woode": 174106, "damfunk": 133206, "nualart": 153444, "hatefillot": 164111, "missionborn": 261765, "yeardescribed": 161075, "theoryhe": 521685}'

文字列はスカラーであるため、jsonとしてロードする必要があるため、他の応答が実行しているとおりの辞書に変換する必要があります

最良の方法は、文字列にJSONロードを実行して、それを辞書に変換し、パンダにロードすることです

myfile=f.read()
jsonData=json.loads(myfile)
df=pd.DataFrame(data)
0
Anant Gupta