javascript - 如何有效地从 Pandas 数据框转移到 JSON

标签 javascript python json d3.js pandas

我已经开始使用 pandas 按日期进行一些聚合。我的目标是计算在特定日期发生的所有测量实例,然后在 D3 中表示它。为了说明我的工作流程,我有一个如下所示的查询集(来自 Django):

queryset = [{'created':"05-16-13", 'counter':1, 'id':13}, {'created':"05-16-13", 'counter':1, 'id':34}, {'created':"05-17-13", 'counter':1, 'id':12}, {'created':"05-16-13", 'counter':1, 'id':7}, {'created':"05-18-13", 'counter':1, 'id':6}]

我在 pandas 中制作了一个数据框,并按创建日期汇总了“计数器”度量值:

import pandas as pd
queryset_df = pd.DataFrame.from_records(queryset).set_index('id')
aggregated_df = queryset_df.groupby('created').sum()

这给了我一个像这样的数据框:

          counter
created          
05-16-13        3
05-17-13        1
05-18-13        1

当我使用 D3 时,我认为 JSON 对象是最有用的。使用 Pandas to_json() 函数,我像这样转换我的数据帧:

aggregated_df.to_json()

给我以下 JSON 对象

{"counter":{"05-16-13":3,"05-17-13":1,"05-18-13":1}}

这不是我想要的,因为我希望能够访问日期和测量值。有没有一种方法可以导出数据,最终得到这样的结果?

data = {"c1":{"date":"05-16-13", "counter":3},"c2":{"date":"05-17-13", "counter":1}, "c3":{"date":"05-18-13", "counter":1}}

我认为如果我可以在 Python 端以不同的方式构建它,它将减少我需要在 JS 端进行的数据格式化量,因为我计划加载数据做这样的事情:

  x.domain(d3.extent(data, function(d) { return d.date; }));
  y.domain(d3.extent(data, function(d) { return d.counter; }));

我非常愿意接受关于更好的整体工作流程的建议,因为这是我需要经常做的事情,但我不确定处理 D3pandas< 之间连接的最佳方式。 (我看过几个直接结合了 pythonD3 的包,但这不是我要找的东西,因为它们似乎专注于静态图表生成而不是制作 svg)

最佳答案

使用 reset_index 将您的日期索引转换回一个简单的数据列,然后使用 orient='index' 属性生成您的 json 对象:

In [11]: aggregated_df.reset_index().to_json(orient='index')
Out[11]: '{"0":{"created":"05-16-13","counter":3},"1":{"created":"05-17-13","counter":1},"2":{"created":"05-18-13","counter":1}}'

关于javascript - 如何有效地从 Pandas 数据框转移到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19214588/

相关文章:

javascript - Knex.js 从选择中插入

javascript - 在查找字符串中字符出现的频率时,此语法的确切含义是什么?

javascript - 为什么这个 for 循环添加的嵌套对象比预期更多?

python 在多个 CPU 核心上传播 subprocess.call

Python - 重新排列 3D 数组中的元素

json - 如何使用 --set 为 Prometheus 图表设置值?

json - Dart 从 base64 转换整个 json 树

json - NodeJS 写入日志文件(Json)

javascript - EJS 噩梦——无法包含外部 View

python - strace 一个 python 函数