首页 > 解决方案 > 通过 POST 请求接收到的数据分析

问题描述

我想制作一个基本的rest API,它将json文件(从数据帧转换而来)作为以下格式的发布请求:

[{"supplier":1,"quantity":37},{"supplier":63,"quantity":32},{"supplier":1,"quantity":12}]

并对其进行一些基本分析,比如假设每个供应商的平均数量并将其发送回用户。

我可以使用以下代码将发布的数据作为 json 成功发送回:

from flask import Flask, jsonify,request
import pandas as pd


    app = Flask(__name__)


    @app.route("/basicAnalysis", methods=['POST'])
    def basicAnalysis():
        if request.method == 'POST':
            try:
                data = request.get_json(force=True)
                d=data.read_json(orient='records')
            except ValueError:
                return jsonify("something went wrong")

            return jsonify(d)
    if __name__ == '__main__':
        app.run(debug=True)

但我不知道如何处理收到的数据。我试图将收到的“数据”转换为数据框,以便我可以使用它。但这行不通。帮助将不胜感激。

编辑 1:包括我用来将 json 数据转换为数据框的行。它给了我以下错误:

builtins.AttributeError

AttributeError: 'list' object has no attribute 'read_json'

我认为这样做的原因是 request.get_json() 会返回一个列表项。

编辑 2:在代码中添加了正在导入的库。

标签: pythonrestflaskflask-restful

解决方案


如果您的烧瓶代码已成功将接收到的数据转换为

data = [ {"supplier":1,"quantity":37},
         {"supplier":63,"quantity":32},
         {"supplier":1,"quantity":12} ]

然后可以构造一个熊猫数据框

df = pd.DataFrame(data)

如果数据仍然是 json 格式,那么

df = pd.read_json(data, orient='record')

应该管用


推荐阅读