为 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
图表,其中填充了零数据。我尝试了几种不同的方法来处理我想要的数据,但都没有成功。
我的目标是绘制col2
与col1
并在同一图表上绘制col4
与col3
,或者换句话说,x 轴将由col1
和col3
定义。
有没有办法实现我的上述目标,如果可以,如何实现?
编辑
在@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的主要内容,如果未能解决你的问题,请参考以下文章