ডাটা সোর্স পাইথন লাইব্রেরি

Google একটি পাইথন লাইব্রেরি ওপেন সোর্স করেছে যা ভিজ্যুয়ালাইজেশনের মাধ্যমে ব্যবহারের জন্য DataTable অবজেক্ট তৈরি করে। এই লাইব্রেরিটি পাইথনে একটি DataTable তৈরি করতে ব্যবহার করা যেতে পারে এবং এটিকে তিনটি ফরম্যাটে আউটপুট করতে পারে:

  • JSON স্ট্রিং - আপনি যদি এমন পৃষ্ঠা হোস্ট করেন যা আপনার ডেটা ব্যবহার করে এমন ভিজ্যুয়ালাইজেশন হোস্ট করে, আপনি এটিকে পপুলেট করার জন্য একটি DataTable কনস্ট্রাক্টরে পাস করার জন্য একটি JSON স্ট্রিং তৈরি করতে পারেন।
  • JSON প্রতিক্রিয়া -- আপনি যদি ভিজ্যুয়ালাইজেশন হোস্ট করে এমন পৃষ্ঠাটি হোস্ট না করেন এবং শুধুমাত্র বহিরাগত ভিজ্যুয়ালাইজেশনের জন্য একটি ডেটা উৎস হিসেবে কাজ করতে চান, তাহলে আপনি একটি সম্পূর্ণ JSON প্রতিক্রিয়া স্ট্রিং তৈরি করতে পারেন যা একটি ডেটা অনুরোধের প্রতিক্রিয়া হিসাবে ফেরত দেওয়া যেতে পারে।
  • জাভাস্ক্রিপ্ট স্ট্রিং -- আপনি ডাটা টেবিলটিকে একটি স্ট্রিং হিসাবে আউটপুট করতে পারেন যা জাভাস্ক্রিপ্ট কোডের বেশ কয়েকটি লাইন নিয়ে গঠিত যা আপনার পাইথন টেবিলের ডেটা দিয়ে একটি google.visualization.DataTable অবজেক্ট তৈরি করবে এবং পপুলেট করবে। তারপর আপনি google.visualization.DataTable অবজেক্ট তৈরি করতে এবং পপুলেট করতে একটি ইঞ্জিনে এই জাভাস্ক্রিপ্ট চালাতে পারেন। এটি সাধারণত শুধুমাত্র ডিবাগিংয়ের জন্য ব্যবহৃত হয়।

এই নথিটি অনুমান করে যে আপনি মৌলিক পাইথন প্রোগ্রামিং বোঝেন এবং একটি ভিজ্যুয়ালাইজেশন তৈরি এবং একটি ভিজ্যুয়ালাইজেশন ব্যবহার করার জন্য প্রাথমিক ভিজ্যুয়ালাইজেশন ডকুমেন্টেশন পড়েছেন।

বিষয়বস্তু

কিভাবে লাইব্রেরি ব্যবহার করবেন

এখানে আরও বিশদে প্রাথমিক পদক্ষেপগুলি রয়েছে:

1. একটি gviz_api.DataTable অবজেক্ট তৈরি করুন

উপরের লিঙ্ক থেকে gviz_api.py লাইব্রেরি ইম্পোর্ট করুন এবং gviz_api.DataTable ক্লাস ইনস্ট্যান্টিয়েট করুন। ক্লাসটি দুটি পরামিতি নেয়: একটি টেবিল স্কিমা, যা টেবিলে ডেটার বিন্যাস বর্ণনা করবে এবং টেবিলটি পূরণ করার জন্য ঐচ্ছিক ডেটা। আপনি পরে ডেটা যোগ করতে পারেন, যদি আপনি চান, বা সম্পূর্ণরূপে ডেটা ওভাররাইট করতে পারেন, কিন্তু পৃথক সারিগুলি সরাতে পারবেন না, বা টেবিলের স্কিমা পরিষ্কার করতে পারবেন না।

2. আপনার টেবিল স্কিমা বর্ণনা করুন

টেবিল স্কিমা কন্সট্রাক্টরে পাস করা table_description প্যারামিটার দ্বারা নির্দিষ্ট করা হয়। আপনি পরে এটি পরিবর্তন করতে পারবেন না। স্কিমা টেবিলের সমস্ত কলাম বর্ণনা করে: প্রতিটি কলামের ডেটা টাইপ, আইডি এবং একটি ঐচ্ছিক লেবেল।

প্রতিটি কলাম একটি টিপল দ্বারা বর্ণনা করা হয়: ( ID [ ,data_type [ ,label [ ,custom_properties ]]])।

  • আইডি - কলাম সনাক্ত করতে ব্যবহৃত একটি স্ট্রিং আইডি। স্পেস অন্তর্ভুক্ত করতে পারে। প্রতিটি কলামের আইডি অনন্য হতে হবে।
  • data_type - [ ঐচ্ছিক ] সেই কলামের পাইথন ডেটা টাইপের একটি স্ট্রিং বর্ণনাকারী। আপনি SingleValueToJS() পদ্ধতিতে সমর্থিত ডেটা প্রকারের একটি তালিকা খুঁজে পেতে পারেন। উদাহরণ "স্ট্রিং" এবং "বুলিয়ান" অন্তর্ভুক্ত। নির্দিষ্ট না থাকলে, ডিফল্ট "স্ট্রিং।"
  • লেবেল - কলামের জন্য একটি ব্যবহারকারী-বান্ধব নাম, যা ভিজ্যুয়ালাইজেশনের অংশ হিসাবে প্রদর্শিত হতে পারে। নির্দিষ্ট না হলে, আইডি মান ব্যবহার করা হয়।
  • custom_properties - কাস্টম কলাম বৈশিষ্ট্যের একটি {String:String} অভিধান।

টেবিল স্কিমা কলাম বর্ণনাকারী tuples একটি সংগ্রহ. প্রতিটি তালিকা সদস্য, অভিধান কী বা অভিধানের মান অবশ্যই অন্য সংগ্রহ বা একটি বর্ণনাকারী টুপল হতে হবে। আপনি অভিধান বা তালিকার যেকোনো সংমিশ্রণ ব্যবহার করতে পারেন, তবে প্রতিটি কী, মান বা সদস্যকে শেষ পর্যন্ত একটি বর্ণনাকারী টিপলের কাছে মূল্যায়ন করতে হবে। এখানে কিছু উদাহরণঃ.

  • কলামের তালিকা: [('a', 'সংখ্যা'), ('b', 'স্ট্রিং')]
  • তালিকার অভিধান: {('a', 'সংখ্যা'): [('b', 'সংখ্যা'), ('c', 'স্ট্রিং')]}
  • অভিধানের অভিধান: {('a', 'সংখ্যা'): {'b': 'number', 'c': 'string'}}
  • এবং তাই, বাসা বাঁধার যে কোনও স্তরের সাথে।

3. আপনার ডেটা পপুলেট করুন

টেবিলে ডেটা যোগ করতে, টেবিল স্কিমার মতো ঠিক একই কাঠামোতে ডেটা উপাদানগুলির একটি কাঠামো তৈরি করুন। সুতরাং, উদাহরণস্বরূপ, যদি আপনার স্কিমা একটি তালিকা হয় তবে ডেটা অবশ্যই একটি তালিকা হতে হবে:

  • স্কিমা: [("রঙ", "স্ট্রিং"), ("আকৃতি", "স্ট্রিং")]
  • ডেটা: [["নীল", "বর্গক্ষেত্র"], ["লাল", "বৃত্ত"]]

স্কিমা একটি অভিধান হলে, ডেটা অবশ্যই একটি অভিধান হতে হবে:

  • স্কিমা: {("রোনের নাম", "স্ট্রিং"): [("রঙ", "স্ট্রিং"), ("আকৃতি", "স্ট্রিং")] }
  • ডেটা: {"row1": ["নীল", "বর্গক্ষেত্র"], "সারি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")