私はPythonの初心者です。私がやりたいのは、Pandasで外国為替の過去の価格データのjsonファイルをロードし、そのデータで統計を行います。Pandas JSONファイルを解析します。追加の値とネストされたリストを含むJSONファイルをpandasデータフレームに渡します。ここで問題が発生しました。
JSONファイル「EUR_JPY_H8.json」を取得しました
まず、必要なライブラリをインポートし、
import pandas as pd
import json
from pandas.io.json import json_normalize
次に、jsonファイルをロードし、
with open('EUR_JPY_H8.json') as data_file:
data = json.load(data_file)
私は以下のリストを得ました:
[{u'complete': True,
u'mid': {u'c': u'119.743',
u'h': u'119.891',
u'l': u'119.249',
u'o': u'119.341'},
u'time': u'1488319200.000000000',
u'volume': 14651},
{u'complete': True,
u'mid': {u'c': u'119.893',
u'h': u'119.954',
u'l': u'119.552',
u'o': u'119.738'},
u'time': u'1488348000.000000000',
u'volume': 10738},
{u'complete': True,
u'mid': {u'c': u'119.946',
u'h': u'120.221',
u'l': u'119.840',
u'o': u'119.888'},
u'time': u'1488376800.000000000',
u'volume': 10041}]
次に、リストをjson_normalizeに渡します。 「mid」の下のネストされたリストにある価格を取得してください
result = json_normalize(data,'time',['time','volume','complete',['mid','h'],['mid','l'],['mid','c'],['mid','o']])
しかし、私はそのような結果を得ました json_normalize output
「時間」データは、行ごとに各整数に分類されました。関連文書を確認しました。文字列またはリストオブジェクトをjson_normalizeの2番目のパラメーターに渡す必要があります。ブレークダウンせずにタイムスタンプを渡すにはどうすればよいですか。
私の期待される出力は次のとおりです。
column =
index | time | volumn | completed | mid.h | mid.l | mid.c | mid.o
追加のパラメータなしでdata
を渡すことができます。
df = pd.io.json.json_normalize(data)
df
complete mid.c mid.h mid.l mid.o time volume
0 True 119.743 119.891 119.249 119.341 1488319200.000000000 14651
1 True 119.893 119.954 119.552 119.738 1488348000.000000000 10738
2 True 119.946 120.221 119.840 119.888 1488376800.000000000 10041
列の順序を変更する場合は、df.reindex
を使用します。
df = df.reindex(columns=['time', 'volume', 'complete', 'mid.h', 'mid.l', 'mid.c', 'mid.o'])
df
time volume complete mid.h mid.l mid.c mid.o
0 1488319200.000000000 14651 True 119.891 119.249 119.743 119.341
1 1488348000.000000000 10738 True 119.954 119.552 119.893 119.738
2 1488376800.000000000 10041 True 120.221 119.840 119.946 119.888