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

Posted

技术标签:

【中文标题】为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON【英文标题】:Formatting JSON from a Pandas data frame for Highcharts within a Django template 【发布时间】:2015-03-05 16:50:59 【问题描述】:

我有一个已转换为 JSON 的 Pandas 数据框,如下所示:

json_data = data_df.to_json()

原始数据框看起来像这样:

    col1  col2  col3  col4
0     1     2     2    -1
1     2     4     3    -2
2     3     6     4    -3
3     4     8     5    -4
4     5     10    6    -5
...

而 JSON 字符串看起来类似于这样:

["col1":1,"col2":2,"col3":2,"col4":-1,"col1":2,"col2":4,"col3":3,"col4":-2,"col1":3,"col2":6,"col3":4,"col4":-3,"col1":4,"col2":8,"col3":5,"col4":-4]

我的Highcharts实现如下:

$(document).ready(function() 

    var my_data = ' json_data '
            
    // create data chart
    $('#container').highcharts(
        chart: 
            renderTo: 'chart_panel',
            type: 'line',
        ,
        legend: layout: 'vertical',
                 align: 'right',
                 verticalAlign: 'middle',
                 borderWidth: 0,
        ,
        title: text: 'Roehrig Damper Data',
                x: -20 // center title
        ,
        xAxis: title: text: 'Velocity (m/sec)',
        yAxis: title: text: 'Force (N)',
        series: [ data: my_data ],
    );

);

json_data 来自我的 Django python 视图,我已经通过浏览器控制台确认它的格式正确。目前我的代码只显示一个空白的Highcharts 图表,其中填充了零数据。我尝试了几种不同的方法来处理我想要的数据,但都没有成功。

我的目标是绘制col2col1 并在同一图表上绘制col4col3,或者换句话说,x 轴将由col1col3 定义。

有没有办法实现我的上述目标,如果可以,如何实现?

编辑

在@Andrew_Lvov 的帮助下,我现在有了一个如下所示的 JSON 对象:

json_data = [
    
        'name': "col1",
        'data': array([1, 2, 3, 4, 5]),
    
        'name': "col2",
        'data': array([2, 4, 6, 8, 10]),
    // etc.
]

现在我的问题是它正在将单词array 添加到数据中。

【问题讨论】:

【参考方案1】:

试试

var myData =  json_data | safe ;

更新

您的数据应采用以下格式:

json_data = [
    
        'name': "col1",
        'data': [1, 2, 3, 4, 5],
    
        'name': "col2",
        'data': [2, 4, 6, 8, 10],
]

系列参数:

        series: myData

更新 #2:

json_data = ['data': list(value.values), 'name': key for key, value in data_df.items()]

【讨论】:

好的,这是有道理的,但我怎样才能让我的json_data 与您提供的格式相似?我已经使用pandas.to_json(orient='records') 中的参数对其进行了一些更改。查看当前 JSON 格式的编辑。 @aus_lacy 已更新。不要忘记将 json_data 转换为 json:json.dumps(json_data) 您的 sn-p 非常接近工作,除了它还包括 data 列中的索引。有没有办法删除或忽略索引列? @aus_lacy,抱歉,没注意到。 ['name': key, 'data': list(value.values()) for key, value in data_df.items()] 它给了我这个错误'numpy.ndarray' object is not callable

以上是关于为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 highcharts 中格式化年份

Highcharts的使用

axure中使用HighCharts模板制作统计图表

单引号未在 HighCharts 图表中正确显示

highcharts的案例嵌套在django中乱码的问题

[django]django+post+ajax+highcharts使用方法