pandas to_json , django 和 d3.js 用于可视化

Posted

技术标签:

【中文标题】pandas to_json , django 和 d3.js 用于可视化【英文标题】:pandas to_json , django and d3.js for visualisation 【发布时间】:2021-09-08 00:04:26 【问题描述】:

我有一个 pandas 数据框,我将它转换为 json 以便创建图形并使用 d3.js 进行可视化,所以我想知道如何发送在 django 中获得的这种 json 格式(在视图或模板中)以便可视化使用 d3.js

def parasol_view(request):
    parasol = function_parasol()
    parasol_json = parasol.to_json(orient='records')
    parasol = parasol.to_html(index = False, table_id="table_parasol")
    context = 
        'parasol': parasol
        'parasol_json':parasol_json
    
    return  render(request,'parasol.html',context)

模板:

%block content%
    parasol| safe
    parasol_json| safe
%endblock content%

【问题讨论】:

【参考方案1】:

我不确定 parasol.to_html 是做什么用的,因此我没有触及那部分。 但为了使用您的 .json 文件,我会这样做:

Views.py:

def parasol_view(request):
    parasol = function_parasol()
    # parasol_json = parasol.to_json(orient='records')
    parasol = parasol.to_html(index = False, table_id="table_parasol")
    context = 
        'parasol': parasol
    #   'parasol_json':parasol_json
    
    return  render(request,'parasol.html', context)

功能阳伞:

function_parasol()
    #whatever code you have here
    #I made a new var parasol2 for this so that the parasol that will be returned will be the same as before. 
    #So that you can still use it for parasol.to_html
    parasol2 = parasol.to_json(orient='records') 
    
    text_file = open("parasol.json", "w") #name of file, make sure it ends with .json
    text_file.write(parasol2)
    text_file.close()
    
    return parasol

你想用 d3 制作图表的 javascript 文件:

//so basically var_name = parasol.json
d3.json("/parasol.json", function(var_name) 
    //Go make your graphs
);

附言。如果您要上传被解析为 json 文件的文件。 Parasol.json 每次都会被覆盖。 所以在某些时候不会有大量的 json 文件。

【讨论】:

以上是关于pandas to_json , django 和 d3.js 用于可视化的主要内容,如果未能解决你的问题,请参考以下文章

pandas DataFrame 使用 to_json() 到字典列表

pandas.to_json 以特定形式输出日期格式

为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON

Pandas DataFrame to_json() 生成带点符号的索引

防止 Pandas to_json() 将时间组件添加到日期对象

pandas to_json 返回一个字符串而不是 json 对象