スコアリング モデルに Python/pickle を使用しています。スコアリングされるデータは、Json スクリプトとして Flask リクエストから取得されます。Flask リクエストからデータを読み取り、データを pandas データフレームに変換し、pandasql を介してデータを変換し、スコアリング モデルを呼び出して、スコアリング結果のデータフレームを Json の Flask レスポンスとして出力する必要があります。
- 受信データがハード ドライブ上の Json ファイルである場合 (json.load() を使用)、上記のすべてを機能させることができます。
- デバッグのために、Flask リクエストを使用して Json スクリプトをロードし、それをデータフレームに変換して、データフレームを Json の Flask レスポンスとして返すことができます。
- ただし、Flask Request を介して Json スクリプトをロードした後、pandasql を使用してデータを変換しようとしましたが、データフレームが見つからないというエラー「例外: df が見つかりません」が表示されます。
- この問題を解決するにはどうすればよいですか? よろしくお願いします(以下のコードとJsonスクリプト)
上記の #2: このコードは機能します。
app = Flask(__name__)
@app.route('/results', methods=['POST'])
def load():
data = request.get_json(force=True)
df = pd.io.json.json_normalize(data)
df.columns = df.columns.map(lambda x: x.split(".")[-1])
resp = make_response(df.to_json())
return resp
if __name__ == '__main__':
app.run(debug=True)
問題#3ごと:このコードは機能しません!pandasql を使用してデータフレームを変換すると、エラーが発生します: 'df is not found' (下部に完全なトレースバック)
app = Flask(__name__)
@app.route('/results', methods=['POST'])
def load():
data = request.get_json(force=True)
df = pd.io.json.json_normalize(data)
df.columns = df.columns.map(lambda x: x.split(".")[-1])
# set up query to transform data (simple example)
q = """
Select *
from df
"""
query = pandasql.sqldf(q, globals())
resp = make_response(query.to_json())
resp.mimetype = 'application/json'
return resp
if __name__ == '__main__':
app.run(debug=True)
完全なエラー トレースバック:
File "C:\ app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
line 1817, in wsgi_app
response = self.full_dispatch_request()
line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
line 1475, in full_dispatch_request
rv = self.dispatch_request()
line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
line 52, in load
query = pandasql.sqldf(q, globals())
line 108, in sqldf
raise Exception("%s not found" % table)
Exception: df not found
Json スクリプト:
{
"response":{
"version":"1.1",
"token":"dsfgf",
"body":{
"customer":{
"customer_id":"1234567",
"verified":"true"
},
"contact":{
"email":"mr@abc.com",
"mobile_number":"0123456789"
},
"personal":{
"gender": "m",
"title":"Dr.",
"last_name":"Muster",
"first_name":"Max",
"family_status":"single",
"dob":"1985-12-23"
}
}
}
}