Это JSON, который я сделал, используя jsonify с колбой и python 3, правильно отформатированный для построения графика D3? А если нет, то как мне его отформатировать?

#python #json #pandas #flask #d3.js

Вопрос:

У меня есть несколько фреймов данных pandas, которые я отправляю из flask для участия в моем проекте. Вот как выглядит одна из таблиц:

 Year | Word 1 | Word 2 | Word 3
-------------------------------
1990 | 532    | 2425   | 649   
1991 | 334    | 2789   | 894
1992...etc.
 

В принципе, у меня есть таблица, которая измеряет использование нескольких слов за последние годы в различных документах. У меня также есть несколько других таблиц, которые делают другие вещи с этими словами. Мой JSON содержит массив объектов json, каждый из которых представляет собой таблицу, которая выполняет разные действия.Вот как устроен мой json:

 [
  {
    "Year": {
      "0": 1990,
      "1": 1991,
      etc.
    },
    "Word 1": {
      "0": 532,
      "1": 334,
      etc.
    },
    "Word 2": {
      "0": 2425,
      "1": 2789,
      etc.
    },
    "word 3": {
      "0": 649,
      "1": 894,
      etc.
    }
  },
  {
    "Year": {
      "0": 1990,
      "1": 1991,
      etc.
    },
    "Word 1": {
      "0": 11.4,
      "1": 8.2,
      etc.
    },
    "Word 2": {
      "0": 79.3,
      "1": 84.5,
      etc.
    },
    "word 3": {
      "0": 20.3,
      "1": 24.9,
      etc.
    }
  }
]
 

Очевидно, что мой JSON намного больше, в нем больше лет и больше кадров данных. Я попытался перенести это в D3, но я несколько неопытен в D3, и документация не помогла мне объяснить, почему такой JSON не может быть правильно введен в D3 и почему я не могу создавать графики для каждого из наборов данных, которые я помещаю в этот JSON. Надеюсь, кто-то, кто больше знает о JSON и о том, как D3 интерпретирует их, может помочь мне понять, почему этот формат неверен или как я мог бы построить их графики (потому что, если быть полностью честным, я не уверен даже в том, как это сделать, так как документация запутана и часто скудна). Спасибо, что нашли время помочь мне с этим.

Ответ №1:

Я интерпретирую здесь, но похоже, что D3 хочет список с одним объектом в строке, как вы получили бы из CSV-файла:

 [
  {
    "Year": 1990,
    "Word 1": 531,
    "Word 2": 2425,
    "Word 3": 649
  },
  {
    "Year": 1991,
    "Word 1": 334,
    "Word 2": 2789,
    "Word 3": 894
  },
  ...
]