2016-11-27 7 views
2

RESTful APIからpandasデータフレームにJSONをデコードしようとしています。ここでJSONがどのように見えるかの抜粋です:JSONをpandasデータフレームにデコードするには?

{ 
    "success":true, 
    "data":[ 
     { 
     "id":26, 
     "name":"A", 
     "comment":"", 
     "start_time_plan":null, 
     "start_time_actual":"2016-09-13 00:00:00", 
     "start_time_delta":null, 
     "start_time_score":null, 
     "start_time_score_achievement":null, 
     "start_time_traffic_light":null, 
     "end_time_plan":null, 
     "end_time_actual":"2016-09-13 00:00:00", 
     "end_time_delta":null, 
     "end_time_score":null, 
     "end_time_score_achievement":null, 
     "end_time_traffic_light":null, 
     "status":0, 
     "measure_schedule_revision_id":63, 
     "responsible_user_id":3, 
     "created_time":"2016-09-13 11:29:14", 
     "created_user_id":3, 
     "modified_time":"2016-09-21 16:33:41", 
     "modified_user_id":3, 
     "model":"Activity" 
     }, 
     { 
     "id":27, 
     "name":"B", 
     "comment":"", 
     "start_time_plan":null, 
     "start_time_actual":"2016-09-13 00:00:00", 
     "start_time_delta":null, 
     "start_time_score":null, 
     "start_time_score_achievement":null, 
     "start_time_traffic_light":null, 
     "end_time_plan":null, 
     "end_time_actual":"2016-09-13 00:00:00", 
     "end_time_delta":null, 
     "end_time_score":null, 
     "end_time_score_achievement":null, 
     "end_time_traffic_light":null, 
     "status":0, 
     "measure_schedule_revision_id":63, 
     "responsible_user_id":3, 
     "created_time":"2016-09-13 11:29:48", 
     "created_user_id":3, 
     "modified_time":"2016-10-16 18:14:36", 
     "modified_user_id":1, 
     "model":"Activity" 
     } 
    ] 
} 

が私の目標は、end_time_deltastart_time_deltaからなる2つのカラムを持つデータフレームを取得することと、それから、単純な散布を構築することです。ここで

は、私が何をすべきかです:

u = 'https://myurl.com' 

# urllib3 + poolmanager for requests 
import urllib3 
http = urllib3.PoolManager() 


# get the JSON 
import json 
r = http.request('GET', u) 
result = json.loads(r.data.decode('utf-8')) 

for item in result['data']: 
    print(item['end_time_delta']) 

for item in result['data']: 
    print(item['start_time_delta']) 

# decode JSON to pandas dataframe 
import pandas as pd 

df = pd.read_json(result, orient='values') 

私はJSONを取得し、それを介してforloopするために管理します。しかし、私はそれをパンダのデータフレームにデコードすることはできません。それはどのように機能するのですか?

(私はread_jsonしかし、私はわからないパンダで自分を試してみた、それはスマートなアイデアですそれはとにかく動作していない。。。)

答えて

4

試してみてください。

df = pd.DataFrame(json.loads(j)['data']) 

がしたい列を取得

df[['start_time_delta', 'end_time_delta']].plot.scatter(0, 1) 
df[['start_time_delta', 'end_time_delta']] 

散布図


セットアップ

import json 

j = """{ 
    "success":true, 
    "data":[ 
     { 
     "id":26, 
     "name":"A", 
     "comment":"", 
     "start_time_plan":null, 
     "start_time_actual":"2016-09-13 00:00:00", 
     "start_time_delta":null, 
     "start_time_score":null, 
     "start_time_score_achievement":null, 
     "start_time_traffic_light":null, 
     "end_time_plan":null, 
     "end_time_actual":"2016-09-13 00:00:00", 
     "end_time_delta":null, 
     "end_time_score":null, 
     "end_time_score_achievement":null, 
     "end_time_traffic_light":null, 
     "status":0, 
     "measure_schedule_revision_id":63, 
     "responsible_user_id":3, 
     "created_time":"2016-09-13 11:29:14", 
     "created_user_id":3, 
     "modified_time":"2016-09-21 16:33:41", 
     "modified_user_id":3, 
     "model":"Activity" 
     }, 
     { 
     "id":27, 
     "name":"B", 
     "comment":"", 
     "start_time_plan":null, 
     "start_time_actual":"2016-09-13 00:00:00", 
     "start_time_delta":null, 
     "start_time_score":null, 
     "start_time_score_achievement":null, 
     "start_time_traffic_light":null, 
     "end_time_plan":null, 
     "end_time_actual":"2016-09-13 00:00:00", 
     "end_time_delta":null, 
     "end_time_score":null, 
     "end_time_score_achievement":null, 
     "end_time_traffic_light":null, 
     "status":0, 
     "measure_schedule_revision_id":63, 
     "responsible_user_id":3, 
     "created_time":"2016-09-13 11:29:48", 
     "created_user_id":3, 
     "modified_time":"2016-10-16 18:14:36", 
     "modified_user_id":1, 
     "model":"Activity" 
     } 
    ] 
}""" 
+0

迅速な応答をありがとう!私はそれがどのように機能すべきかを見ることができます。しかし、私は次のエラーを受け取ります: 'AttributeError: 'dict'オブジェクトに属性 'loads'がありません。 – Rachel

+3

@Rachel' dict'で名前 'json'をマスクしたようです。 'del json'や' import json'を実行してもう一度やり直してください。 –

+1

@Rachel私はセットアップで投稿を更新しました。混乱がなくなることを願っています。 – piRSquared

関連する問題