Veri Kaynağı Python Kitaplığı

Google, görselleştirmelerle tüketilmek üzere DataTable nesneleri oluşturan açık kaynaklı bir Python kitaplığına sahiptir. Bu kitaplık, Python'da DataTable oluşturmak ve oluşturduğunuz dosyayı üç biçimden birinde oluşturmak için kullanılabilir:

  • JSON dizesi -- Verilerinizi kullanan görselleştirmeyi barındıran sayfayı barındırıyorsanız doldurması için bir DataTable oluşturucuya iletilecek bir JSON dizesi oluşturabilirsiniz.
  • JSON yanıtı -- Görselleştirmeyi barındıran sayfayı siz barındırmıyorsanız ve yalnızca harici görselleştirmeler için bir veri kaynağı olarak hareket etmek istiyorsanız, bir veri isteğine yanıt olarak döndürülebilecek eksiksiz bir JSON yanıt dizesi oluşturabilirsiniz.
  • JavaScript dizesi: Veri tablosunu, birkaç JavaScript kod satırından oluşan ve bir google.visualization.DataTable nesnesini oluşturup Python tablonuzdaki verilerle dolduran bir dize olarak çıkışını alabilirsiniz. Daha sonra, google.visualization.DataTable nesnesini oluşturmak ve doldurmak için bu JavaScript'i bir motorda çalıştırabilirsiniz. Bu genellikle yalnızca hata ayıklama için kullanılır.

Bu belgede, temel Python programlamasını anladığınız ve görselleştirme oluşturma ve görselleştirme kullanma ile ilgili tanıtım görselleştirme belgelerini okuduğunuz varsayılır.

İçindekiler

Kitaplık nasıl kullanılır?

Temel adımlar daha ayrıntılı olarak aşağıda verilmiştir:

1. gviz_api.DataTable nesnesi oluşturun

Yukarıdaki bağlantıdan gviz_api.py kitaplığını içe aktarın ve gviz_api.DataTable sınıfını örneklendirin. Sınıf iki parametre alır: tablodaki verilerin biçimini açıklayan tablo şeması ve tablonun doldurulması için isteğe bağlı veriler. İsterseniz daha sonra veri ekleyebilir veya verilerin üzerine tamamen yazabilirsiniz, ancak satırları tek tek kaldıramazsınız veya tablo şemasını temizleyemezsiniz.

2. Tablo şemanızı açıklayın

Tablo şeması, oluşturucuya iletilen table_description parametresiyle belirtilir. Bunu daha sonra değiştiremezsiniz. Şema, tablodaki tüm sütunları açıklar: her bir sütunun veri türü, kimlik ve isteğe bağlı etiket.

Her sütun bir unsurla açıklanır: (Kimlik [,data_type [,label [,custom_properties]]]).

  • Kimlik: Sütunu tanımlamak için kullanılan dize kimliği. Boşluk içerebilir. Her sütunun kimliği benzersiz olmalıdır.
  • data_type - [isteğe bağlı] Bu sütundaki verilerin Python veri türünün bir dize tanımlayıcısı. Desteklenen veri türlerinin listesini SingleValueToJS() yönteminde bulabilirsiniz. Örnek olarak "dize" ve "boole" verilebilir. Belirtilmezse varsayılan değer "dize"dir.
  • label: Sütun için görselleştirmenin bir parçası olarak görüntülenebilecek kullanıcı dostu bir ad. Belirtilmezse kimlik değeri kullanılır.
  • custom_properties - Özel sütun özelliklerinin bir {String:String} sözlüğü.

Tablo şeması, sütun açıklayıcı defterlerinin bir koleksiyonudur. Her liste üyesi, sözlük anahtarı veya sözlük değeri başka bir koleksiyon veya açıklayıcı delege olmalıdır. Herhangi bir sözlük veya liste kombinasyonunu kullanabilirsiniz ancak her anahtar, değer veya üyenin sonunda bir açıklayıcı demet olarak değerlendirilmesi gerekir. Aşağıda birkaç örnek verilmiştir.

  • Sütun listesi: [('a', 'number'), ('b', 'string')]
  • Dictionary of lists: {('a', 'number'): [('b', 'number'), ('c', 'string')]}
  • Dictionary of dictionaries: {('a', 'number'): {'b': 'number', 'c': 'string'}}
  • Aynı şekilde, iç içe yerleştirme herhangi bir düzeyde de işe yarar.

3. Verilerinizi doldurma

Tabloya veri eklemek için tablo şemasıyla tam olarak aynı yapıda bir veri öğesi yapısı oluşturun. Dolayısıyla, örneğin şemanız bir listeyse veriler de liste olmalıdır:

  • schema: [("renk", "dize"), ("şekil", "dize")]
  • veri: [["mavi", "kare"], ["kırmızı", "daire"]]

Şema bir sözlükse veriler bir sözlük olmalıdır:

  • schema: {("satıradı", "dize"): [("renk", "dize"), ("şekil", "dize")] }
  • data: {"satır1": ["mavi", "kare"], "satır2": ["kırmızı", "daire"]}

Bir tablo satırı, ilgili verilerin ve şemanın bir bölümüdür. Örneğin, iki sütunlu bir liste şemasının iki veri satırına nasıl uygulandığı burada gösterilmektedir.

Schema:[(color),(shape)]
            /     \       
Data: [["blue", "square"], ["red", "circle"]]

Table: 
      Color    Shape
      blue     square
      red      circle

Buradaki sözlük anahtarlarının sütun verilerini değerlendirdiğini unutmayın. Daha karmaşık örnekleri koddaki AttachData() yöntemi belgelerinde bulabilirsiniz. Böyle karmaşık bir iç içe yerleştirmenin amacı, ihtiyaçlarınıza uygun bir Python veri yapısı kullanabilmenizi sağlamaktır.

4. Verilerinizin çıktısını alın

En yaygın çıkış biçimi JSON'dir. Bu nedenle, döndürülecek verileri oluşturmak için muhtemelen ToJsonResponse() işlevini kullanırsınız. Bununla birlikte, giriş isteğini ayrıştırıyorsanız ve farklı çıkış biçimlerini destekliyorsanız virgülle ayrılmış değerler, sekmeyle ayrılmış değerler ve JavaScript dahil olmak üzere diğer biçimleri döndürmek için diğer çıkış yöntemlerinden herhangi birini çağırabilirsiniz. JavaScript genellikle yalnızca hata ayıklama için kullanılır. Tercih edilen yanıt biçimini almak amacıyla bir isteği nasıl işleyeceğinizi öğrenmek için Veri Kaynağını Uygulama bölümüne bakın.

Örnek Kullanım

Çeşitli çıkış biçimlerinin nasıl kullanılacağını gösteren bazı örnekleri burada bulabilirsiniz.

ToJSon ve ToJS Örneği

#!/usr/bin/python

import gviz_api

page_template = """
<html>
  <script src="https://www.gstatic.com/charts/loader.js"></script>
  <script>
    google.charts.load('current', {packages:['table']});

    google.charts.setOnLoadCallback(drawTable);
    function drawTable() {
      %(jscode)s
      var jscode_table = new google.visualization.Table(document.getElementById('table_div_jscode'));
      jscode_table.draw(jscode_data, {showRowNumber: true});

      var json_table = new google.visualization.Table(document.getElementById('table_div_json'));
      var json_data = new google.visualization.DataTable(%(json)s, 0.6);
      json_table.draw(json_data, {showRowNumber: true});
    }
  </script>
  <body>
    <H1>Table created using ToJSCode</H1>
    <div id="table_div_jscode"></div>
    <H1>Table created using ToJSon</H1>
    <div id="table_div_json"></div>
  </body>
</html>
"""

def main():
  # Creating the data
  description = {"name": ("string", "Name"),
                 "salary": ("number", "Salary"),
                 "full_time": ("boolean", "Full Time Employee")}
  data = [{"name": "Mike", "salary": (10000, "$10,000"), "full_time": True},
          {"name": "Jim", "salary": (800, "$800"), "full_time": False},
          {"name": "Alice", "salary": (12500, "$12,500"), "full_time": True},
          {"name": "Bob", "salary": (7000, "$7,000"), "full_time": True}]

  # Loading it into gviz_api.DataTable
  data_table = gviz_api.DataTable(description)
  data_table.LoadData(data)

  # Create a JavaScript code string.
  jscode = data_table.ToJSCode("jscode_data",
                               columns_order=("name", "salary", "full_time"),
                               order_by="salary")
  # Create a JSON string.
  json = data_table.ToJSon(columns_order=("name", "salary", "full_time"),
                           order_by="salary")

  # Put the JS code and JSON string into the template.
  print "Content-type: text/html"
  print
  print page_template % vars()


if __name__ == '__main__':
  main()

ToJSonResponse Örneği

JSonResponse, veri isteğinde uzak istemci tarafından kullanılır.

#!/usr/bin/python

import gviz_api

description = {"name": ("string", "Name"),
               "salary": ("number", "Salary"),
               "full_time": ("boolean", "Full Time Employee")}
data = [{"name": "Mike", "salary": (10000, "$10,000"), "full_time": True},
        {"name": "Jim", "salary": (800, "$800"), "full_time": False},
        {"name": "Alice", "salary": (12500, "$12,500"), "full_time": True},
        {"name": "Bob", "salary": (7000, "$7,000"), "full_time": True}]

data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
print "Content-type: text/plain"
print
print data_table.ToJSonResponse(columns_order=("name", "salary", "full_time"),
                                order_by="salary")