2017-08-16 8 views
0

私は特定の地域で海洋条件を与えるはずのApiからデータを取得しようとしています。私はデータを引き出し、それらを別々の変数に分けるのにいくつかの問題があります。理想的には、私はこのデータをデータフレームとして来たいと思っていますが、それは別の方法で来る気にはなりません。私はこれをやっている経験がないので、これを正しく行っているかどうかはわかりません。 マイコード:予報を示すURLのPython Apiデータをデータフレームとして引き出す

dataLink = 
'http://magicseaweed.com/api/MYApiKEY/forecast/?spot_id=1407&units=eu' 
data = urllib.request.urlopen(dataLink) 
data = data.readline().decode("utf-8") 
data = json.loads(data) 
data = pd.DataFrame(data) 
swell = data[(data['charts']=='swell')] 

例:

[{"timestamp":1502755200,"localTimestamp":1502755200,"issueTimestamp":1502755200,"fadedRating":1,"solidRating":0,"swell":{"absMinBreakingHeight":0.61,"absMaxBreakingHeight":0.95,"unit":"m","minBreakingHeight":0.6,"maxBreakingHeight":0.9,"components":{"combined":{"height":1.2,"period":7,"direction":77.13,"compassDirection":"WSW"},"primary":{"height":1.2,"period":7,"direction":70.75,"compassDirection":"WSW"},"secondary":{"height":0.1,"period":11,"direction":92.74,"compassDirection":"W"}}},"wind":{"speed":18,"direction":90,"compassDirection":"W","chill":13,"gusts":25,"unit":"kph"},"condition":{"pressure":1013,"temperature":15,"weather":12,"unitPressure":"mb","unit":"c"},"charts":{"swell":"https:\/\/hist-1.msw.ms\/wave\/750\/1-1502755200-1.gif","period":"https:\/\/hist-1.msw.ms\/wave\/750\/1-1502755200-2.gif","wind":"https:\/\/hist-1.msw.ms\/gfs\/750\/1-1502755200-4.gif","pressure":"https:\/\/hist-1.msw.ms\/gfs\/750\/1-1502755200-3.gif","sst":"https:\/\/hist-1.msw.ms\/sst\/750\/1-1502755200-10.gif"}}, 
+0

あなたのデータはどこ形式ではありませんデータフレームへの読み込みは有益ですialと仕事をする。 –

+0

私はどのようにデータを扱うべきか提案はありますか?私はこの点に関して私が何をしているのか完全には分かっていません。 –

+0

うーん....すべてのデータはこの形式に従っていますか?そして、それはそれに値するかもしれません。あなたが正直にやりたいことに依存します。 –

答えて

2

あなたがjson_normalizeを必要とするようだ:

from pandas.io.json import json_normalize 

data = json.loads(data) 
df = json_normalize(data) 
print (df) 

          charts.wind condition.pressure \ 
0 https:\/\/hist-1.msw.ms\/gfs\/750\/1-150275520...    1013 

    condition.temperature condition.unit condition.unitPressure \ 
0      15    c      mb 

    condition.weather ...  swell.maxBreakingHeight \ 
0     12 ...       0.9 

    swell.minBreakingHeight swell.unit timestamp wind.chill \ 
0      0.6   m 1502755200   13 

    wind.compassDirection wind.direction wind.gusts wind.speed wind.unit 
0      W    90   25   18  kph 

[1 rows x 38 columns] 
関連する問題