私は現在、分析の結果として pandas DataFrames を生成するプロジェクトに取り組んでいます。私は Django で開発しており、「結果」モデルの「データ」フィールドを使用して pandas DataFrame を保存したいと考えています。
HDF5(HDF Store) は、私の pandas DataFrames を格納する最も効率的な方法のようです。ただし、モデルにカスタム フィールドを作成して保存する方法がわかりません。説明のために、簡略化した views.py と models.py を以下に示します。
models.py
class Result(model.Model):
scenario = models.ForeignKey(Scenario)
# HOW DO I Store HDFStore
data = models.HDF5Field()
ビュー.py
class AnalysisAPI(View):
model = Result
def get(self, request):
request_dict = request.GET.dict()
scenario_id = request_dict['scenario_id']
scenario = Scenario.objects.get(pk=scenario_id)
result = self.model.objects.get(scenario=scenario)
analysis_results_df = result.data['analysis_results_df']
return JsonResponse(
analysis_results_df.to_json(orient="records")
)
def post(self, request):
request_dict = request.POST.dict()
scenario_id = request_dict['scenario_id']
scenario = Scenario.objects.get(pk=scenario_id)
record_list = request_dict['record_list']
analysis_results_df = run_analysis(record_list)
data = HDFStore('store.h5')
data['analysis_results_df'] = analysis_results_df
new_result = self.model(scenario=scenario, data=data)
new_result.save()
return JsonResponse(
dict(status="OK", message="Analysis results saved.")
)
また、Django で使用できるのであれば、同様のパフォーマンスを持つ Pickle などの別の保存方法も受け入れます。