کتابخانه پایتون منبع داده

گوگل یک کتابخانه پایتون را منبع باز کرده است که اشیاء DataTable را برای مصرف با تجسم ایجاد می کند. از این کتابخانه می توان برای ایجاد یک DataTable در پایتون و خروجی آن در هر یک از سه فرمت استفاده کرد:

  • رشته JSON -- اگر صفحه‌ای را میزبانی می‌کنید که میزبان تجسم‌سازی است که از داده‌های شما استفاده می‌کند، می‌توانید یک رشته JSON ایجاد کنید تا به سازنده DataTable منتقل شود تا آن را پر کند.
  • پاسخ JSON -- اگر صفحه ای را که میزبان تجسم است میزبانی نمی کنید و فقط می خواهید به عنوان منبع داده برای تجسم های خارجی عمل کنید، می توانید یک رشته پاسخ کامل JSON ایجاد کنید که می تواند در پاسخ به درخواست داده برگردانده شود.
  • رشته جاوا اسکریپت -- می توانید جدول داده ها را به صورت رشته ای خروجی بگیرید که شامل چندین خط کد جاوا اسکریپت است که یک شی google.visualization.DataTable را با داده های جدول پایتون شما ایجاد و پر می کند. سپس می توانید این جاوا اسکریپت را در یک موتور برای تولید و پر کردن شی google.visualization.DataTable کنید. این معمولاً فقط برای اشکال زدایی استفاده می شود.

این سند فرض می کند که شما برنامه نویسی پایه پایتون را درک می کنید و مستندات تجسم مقدماتی را برای ایجاد یک تجسم و استفاده از تجسم خوانده اید.

فهرست

نحوه استفاده از کتابخانه

در اینجا مراحل اساسی با جزئیات بیشتر آمده است:

1. یک شی gviz_api.DataTable ایجاد کنید

کتابخانه gviz_api.py را از پیوند بالا وارد کنید و کلاس gviz_api.DataTable را نمونه سازی کنید. کلاس دو پارامتر دارد: یک طرح جدول، که فرمت داده ها در جدول را توصیف می کند، و داده های اختیاری برای پر کردن جدول. در صورت تمایل می‌توانید بعداً داده‌ها را اضافه کنید یا داده‌ها را کاملاً بازنویسی کنید، اما ردیف‌های جداگانه را حذف نکنید یا طرح جدول را پاک نکنید.

2. طرح جدول خود را شرح دهید

طرح جدول توسط پارامتر table_description شده به سازنده مشخص می شود. بعدا نمی توانید آن را تغییر دهید. این طرح همه ستون های جدول را توصیف می کند: نوع داده هر ستون، شناسه و یک برچسب اختیاری.

هر ستون با یک تاپل توصیف می‌شود: ( شناسه [ , نوع_داده [ ,برچسب [ ,خواص_سفارشی ]]]).

  • ID - شناسه رشته ای که برای شناسایی ستون استفاده می شود. می تواند شامل فضاها باشد. شناسه هر ستون باید منحصر به فرد باشد.
  • data_type - [ اختیاری ] یک توصیفگر رشته ای از نوع داده پایتون از داده های آن ستون. می توانید لیستی از انواع داده های پشتیبانی شده را در متد SingleValueToJS() بیابید. به عنوان مثال عبارتند از "رشته" و "boolean". اگر مشخص نشده باشد، پیش فرض "رشته" است.
  • برچسب - یک نام کاربر پسند برای ستون، که ممکن است به عنوان بخشی از تجسم نمایش داده شود. اگر مشخص نشده باشد، از مقدار ID استفاده می شود.
  • custom_properties - فرهنگ لغت {String:String} از ویژگی های ستون سفارشی.

طرح جدول مجموعه ای از تاپل های توصیفگر ستون است. هر عضو لیست، کلید فرهنگ لغت یا مقدار فرهنگ لغت باید مجموعه دیگری باشد یا یک تاپل توصیفگر. شما می توانید از هر ترکیبی از فرهنگ لغت یا لیست استفاده کنید، اما هر کلید، مقدار یا عضو باید در نهایت به یک تاپل توصیفگر ارزیابی شود. در اینجا چند نمونه آورده شده است.

  • فهرست ستون‌ها: [('a'، 'number')، ('b'، 'string')]
  • فرهنگ لغت لیست ها: {('a', 'number'): [('b', 'number'), ('c', 'string')]}
  • فرهنگ لغت نامه ها: {('a', 'number'): {'b': 'number', 'c': 'string'}}
  • و به همین ترتیب، با هر سطحی از تودرتو.

3. داده های خود را پر کنید

برای افزودن داده به جدول، ساختاری از عناصر داده را دقیقاً در همان ساختار طرحواره جدول بسازید. بنابراین، برای مثال، اگر طرح شما یک لیست است، داده ها باید یک لیست باشند:

  • طرحواره: [("رنگ"، "رشته")، ("شکل"، "رشته")]
  • داده ها: [["آبی"، "مربع"]، ["قرمز"، "دایره"]]

اگر طرحواره یک فرهنگ لغت است، داده ها باید یک فرهنگ لغت باشند:

  • طرحواره: {("نام ردیف"، "رشته"): [("رنگ"، "رشته")، ("شکل"، "رشته")] }
  • داده: {"ردیف1": ["آبی"، "مربع"]، "ردیف2": ["قرمز"، "دایره"]}

یک ردیف جدول بخشی از داده ها و طرحواره مربوطه است. به عنوان مثال، در اینجا نحوه اعمال طرحی از یک لیست از دو ستون به دو ردیف داده است.

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

Table: 
      Color    Shape
      blue     square
      red      circle

توجه داشته باشید که کلیدهای فرهنگ لغت در اینجا به داده های ستونی ارزیابی می شوند. می توانید نمونه های پیچیده تری را در مستندات متد AppendData() در کد پیدا کنید. هدف از اجازه دادن به چنین تودرتو پیچیده ای این است که به شما اجازه دهد از ساختار داده پایتون متناسب با نیازهای خود استفاده کنید.

4. داده های خود را خروجی بگیرید

رایج ترین فرمت خروجی JSON است، بنابراین احتمالاً از تابع ToJsonResponse() برای ایجاد داده برای بازگشت استفاده خواهید کرد. با این حال، اگر درخواست ورودی را تجزیه می‌کنید و از فرمت‌های خروجی مختلف پشتیبانی می‌کنید، می‌توانید هر یک از روش‌های خروجی دیگر را برای برگرداندن فرمت‌های دیگر، از جمله مقادیر جداشده با کاما، مقادیر جداشده با تب و جاوا اسکریپت فراخوانی کنید. جاوا اسکریپت معمولاً فقط برای اشکال زدایی استفاده می شود. برای یادگیری نحوه پردازش درخواست برای به دست آوردن قالب پاسخ ترجیحی، به پیاده سازی منبع داده مراجعه کنید.

مثال استفاده

در اینجا چند مثال نشان می دهد که چگونه از فرمت های خروجی مختلف استفاده کنید.

مثال ToJSon و ToJS

#!/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

JSonResponse توسط یک کلاینت راه دور در درخواست داده استفاده می شود.

#!/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")