【问题标题】:Python Api pulling data as dataframePython Api 将数据拉取为数据框
【发布时间】:2018-01-24 10:14:00
【问题描述】:

我正在尝试从 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')]

显示预测的 URL 示例:

[{"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"}},

【问题讨论】:

  • 您的数据的格式不适合加载到数据框中。
  • 您对我应该如何处理数据有什么建议吗?我不完全确定在这方面我在做什么,谢谢
  • 嗯....您的所有数据都遵循这种格式吗?那么,这可能是值得的。取决于你想诚实地做什么。
  • 所有来自本网站的数据都是如此。我正在尝试将其实现到 tkinter GUI 中,以便最终用户可以查看给定位置的预测。还有其他数据也将进入我从传入日志文件中提取的 GUI
  • 好的,你要显示什么数据?

标签: python api pandas dataframe


【解决方案1】:

看来你需要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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-19
    • 2017-09-20
    • 1970-01-01
    • 2021-07-13
    • 2020-06-17
    • 2017-10-19
    • 2020-05-29
    • 2022-06-11
    相关资源
    最近更新 更多