Как передать строковые данные из pandas dataframe в google.visualization.DataTable, используя json и flask - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь создать элемент веб-сайта для визуализации данных wordtree, используя деревья слов Google и flask.

Подход, который я выбрал, основан на этом ответе, включая попытку реализовать рекомендованное форматирование здесь , и я также попытался выполнить this учебник, но мой word_trees.html просто продолжает рендеринг пустой страницы.

Помимо загрузки данных из гораздо большего, хотя и эквивалентного .csv в реальном приложении, соответствующие части app.py:

from flask import Flask, render_template
import pandas as pd
import gviz_api

#create to data
lst = ["You've stolen a 'PIZZA' my heart! @CfgLaw Than",
       "Did your workplace buy you pizza for #national",
       "So last week on #NationalPizzaDay I had plans|",
       "Last week it was #NewStartersDay and #National",
       "@JurysInnsHotels #NationalPizzaDay Wow! I’m dr"]
df = pd.DataFrame({'text':lst})

#initiate app
app = Flask(__name__)

#create gvis formatted data
def get_data():
  # Creating the data
  description = {"text": ("string", "Text")}
  data = [{"text":"{}".format(text)} for text in df.text]
  # Loading it into gviz_api.DataTable
  data_table = gviz_api.DataTable(description)
  data_table.LoadData(data)
  # Creating a JSon string
  json_string = data_table.ToJSon()
  return json_string

#pass data to template 
@app.route("/")
def word_trees():
    data = get_data()
    return render_template('word_trees.html',tweets=data)

if __name__ == "__main__":
    app.run(debug=True) 

А word_trees.html составляет:

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {packages:['wordtree']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
          var data = new google.visualization.DataTable(tweets);
        );

        var options = {
          wordtree: {
            format: 'implicit',
            word: 'pizza',
            type: 'double'
          }
        };

        var chart = new google.visualization.WordTree(document.getElementById('wordtree_basic'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="wordtree_basic" style="width: 900px; height: 500px;"></div>
    </body>
</html>

Я ожидаю, что приложение отобразит дерево слов на основе данных в df.text, но оно продолжает обрабатывать пустую страницу.

...