2017-01-20 10 views
1

私は、(JSONで)株価を取得するアプリケーションを開発しようとしています。私の問題は、私が働くことができるpandas DataFrameにJSONレスポンスを取得することです。エラーTypeError例外とdf = pd.read_json...Python:JSONレスポンスの一部からDataFrameを構築する

''' 
References 
http://stackoverflow.com/questions/6862770/python-3-let-json-object- accept-bytes-or-let-urlopen-output-strings 
''' 
import json 
import pandas as pd 
from urllib.request import urlopen 

#set API call 
url = "https://www.quandl.com/api/v3/datasets/WIKI/AAPL.json?start_date=2017-01-01&end_date=2017-01-31" 

#make call and receive response 
response = urlopen(url).read().decode('utf8') 
dataresponse = json.loads(response) 

#check incoming 
#print(dataresponse) 

df = pd.read_json(dataresponse) 

print(df) 

アプリケーションエラー:予想される文字列またはUnicodeここに私のコードです。

私はこれが最初のハードルだと考えます。

2番目は私が必要とする場所になっています。 JSON応答には、私が興味を持っている2つの配列、column_namesdataだけが含まれています。どのようにこれらの2つだけを抽出し、pandas DataFrameに入れますか?

+1

'pd.read_json'が直接JSON文字列を取るので、この操作を行います。' pd.read_json(レスポンス) ' – IanS

答えて

4

pd.read_jsonが直接JSON文字列を取るので、あなたがこのやるべきこと、あなたの最初の質問に答えるために:

pd.read_json(response) 

をしかし、その代わりに、データを構造化する方法を検討し、それが最初に変換するのが最善ですそして、単にd['dataset']['data']d['dataset']['column_names']からデータフレームを構築

d = json.loads(response) 

:データを含む辞書にJSON文字列:

pd.DataFrame(data=d['dataset']['data'], columns=d['dataset']['column_names']) 
+0

はあなたにIANSをありがとうございます。これは治療になりました。 – skywalker

関連する問題