现在我一次向flask_restful
api发送一个项目,并将结果附加到数据帧。
如果api可以处理整个数据帧,而不是逐行处理,那么它会更快。
这可能吗?
这是我正在做的一个非常基本的模型。
这个api取人名,并返回一句话:"你的名字是">
from flask import Flask
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
class my_api(Resource):
def __init__(self):
self.reqparse = reqparse.RequestParser()
self.reqparse.add_argument('name', type = str, default='')
super(my_api, self).__init__()
def get(self):
args = self.reqparse.parse_args()
name = args['name']
return f'Your name is {name}'
api.add_resource(my_api, '/')
if __name__ == '__main__':
app.run(debug=True)
现在我将在我的数据帧上使用api:
df = pd.DataFrame({'name':['John','Jim','Mary','Michael']})
print(df)
name
0 John
1 Jim
2 Mary
3 Michael
# list to save api results
results = []
# send each name in the column to the api
for name in df['name']:
# api call
api_data = send name to api
results.append(api_data)
# attach results to dataframe
df['results'] = results
因此,按照我实际的flask api的设置方式,如果我得到完整的数据帧,而不是一行接一行,速度会快得多。此外,数据帧比上面的模型更大。还有更多的列和行。
有什么建议吗?
您可以将数据帧转换为JSON并将其发送到API。您必须配置API以接受解析JSON。通过这种方式,您可以同时发送完整的数据。此外,不建议对类名使用snake_case