কম্পিউটার

পাইথনের সাথে API ফলাফলগুলি কীভাবে ভিজ্যুয়ালাইজ করবেন


পরিচয়..

একটি API লেখার সবচেয়ে বড় সুবিধা হল বর্তমান/লাইভ ডেটা বের করা, এমনকি যখন ডেটা দ্রুত পরিবর্তন হচ্ছে, একটি API সর্বদা আপ টু ডেট ডেটা পাবে। API প্রোগ্রামগুলি নির্দিষ্ট তথ্যের অনুরোধ করার জন্য খুব নির্দিষ্ট URL ব্যবহার করবে যেমন স্পটিফাই বা ইউটিউব মিউজিক-এ 2020 সালের সেরা 100টি সর্বাধিক প্লে করা গান। অনুরোধ করা ডেটা JSON বা CSV-এর মতো সহজে প্রক্রিয়াকৃত ফরম্যাটে ফেরত দেওয়া হবে।

পাইথন ব্যবহারকারীকে প্রায় যেকোনো URL এ API কল লিখতে দেয় যা আপনি ভাবতে পারেন। এই উদাহরণে আমি দেখাব কিভাবে GitHub থেকে API ফলাফল বের করতে হয় এবং সেগুলোকে কল্পনা করতে হয়।

দ্রষ্টব্য - পরিকল্পনাটি ছিল স্পটিফাই থেকে এপিআই ফলাফল দেখানোর, কিন্তু স্পটিফাই-এর আরও প্রাক-প্রয়োজনীয় প্রয়োজন যার জন্য 1টির বেশি পোস্টের প্রয়োজন হতে পারে, তাই আমরা এই পোস্টের জন্য GitHUb এর সাথে থাকব।

Github, প্রায়শই ডেভেলপার হিসাবে পরিচিত Facebook আমাদের বিভিন্ন ধরণের ডেটা বের করতে API কল লিখতে দেয়। ধরে নিন আপনি আরও তারা দিয়ে জাভাস্ক্রিপ্ট গিথুব সংগ্রহস্থলগুলি অনুসন্ধান করতে চেয়েছিলেন। গিটহাবের একটি API কী প্রয়োজন হয় না যখন অন্যরা চাইলে।

কিভাবে করতে হবে..

1. পাইথন কমান্ড প্রম্পট খুলে এবং পিপ ইনস্টল করার অনুরোধ ফায়ার করে অনুরোধ প্যাকেজ ইনস্টল করুন।

import requests

# set the siteurl
site_url = 'https://api.github.com/search/repositories?q=language:javascript&sort=stars'

# set the headers
headers = {'Accept': 'application/vnd.github.v3+json'}

# call the url and save the response
response = requests.get(site_url, headers=headers)

# Get the response
print(f"Output \n *** Response from {site_url} is {response.status_code} ")

আউটপুট

*** Response from https://api.github.com/search/repositories?q=language:javascript&sort=stars is 200

2. API JSON ফরম্যাটে তথ্য প্রদান করে, তাই আমাদের তথ্যকে পাইথন অভিধানে রূপান্তর করতে json() পদ্ধতি ব্যবহার করতে হবে।

উদাহরণ

response_json = response.json()
print(f"Output \n *** keys in the Json file \n {response_json.keys()} \n")

print(f" *** Total javascript repositories in GitHub \n {response_json['total_count']}" )

আউটপুট

*** keys in the Json file
dict_keys(['total_count', 'incomplete_results', 'items'])

*** Total javascript repositories in GitHub
11199577
  • সুতরাং, আমাদের কাছে 3টি কী আছে যার মধ্যে আমরা অসম্পূর্ণ_ফলাফল উপেক্ষা করতে পারি। এখন আমাদের প্রথম সংগ্রহস্থল পরীক্ষা করা যাক.

উদাহরণ

repositories = response_json['items']
first_repo = repositories[0]

print(f"Output \n *** Repository information keys total - {len(first_repo)} - values are -\n")
for keys in sorted(first_repo.keys()):
print(keys)

print(f" *** Repository name - {first_repo['name']}, Owner - {first_repo['owner']['login']}, total watchers - {first_repo['watchers_count']} ")

আউটপুট

*** Repository information keys total - 74 - values are -

archive_url
archived
assignees_url
blobs_url
branches_url
clone_url
collaborators_url
comments_url
commits_url
compare_url
contents_url
contributors_url
created_at
default_branch
deployments_url
description
disabled
downloads_url
events_url
fork
forks
forks_count
forks_url
full_name
git_commits_url
git_refs_url
git_tags_url
git_url
has_downloads
has_issues
has_pages
has_projects
has_wiki
homepage
hooks_url
html_url
id
issue_comment_url
issue_events_url
issues_url
keys_url
labels_url
language
languages_url
license
merges_url
milestones_url
mirror_url
name
node_id
notifications_url
open_issues
open_issues_count
owner
private
pulls_url
pushed_at
releases_url
score
size
ssh_url
stargazers_count
stargazers_url
statuses_url
subscribers_url
subscription_url
svn_url
tags_url
teams_url
trees_url
updated_at
url
watchers
watchers_count
*** Repository name - freeCodeCamp, Owner - freeCodeCamp, total watchers - 316079

4. ভিজ্যুয়ালাইজেশনের জন্য সময়, হজম করার জন্য প্রচুর তথ্য রয়েছে, তাই সেরা উপায় হল ফলাফলগুলি কল্পনা করা। মনে রাখবেন - "একটি ছবি হাজার শব্দের মূল্য"।

আমি ইতিমধ্যেই অন্য পোস্টে ম্যাটপ্লটলিব কভার করেছি, তাই পরিবর্তনের জন্য আমরা প্লটলি ব্যবহার করে চার্ট করব।

  • মডিউল ইনস্টল করুন - প্লটভাবে। আমরা প্লটভাবে আমদানি শুরু করব।

উদাহরণ

from plotly.graph_objs import Bar
from plotly import offline

6. আমরা সংগ্রহস্থল বনাম তারার সংখ্যা সহ একটি বার চার্ট করব। যত বেশি তারা তত বেশি জনপ্রিয় ভান্ডার। উপরে কে আছে দেখতে তাই ভাল উপায়. সুতরাং, আমাদের দুটি ভেরিয়েবলের সংগ্রহস্থলের নাম এবং তারার সংখ্যা দরকার।

ইন[6]:

উদাহরণ

repo_names, repo_stars = [], []
for repo_info in repositories:
repo_names.append(repo_info['name'])
repo_stars.append(repo_info['stargazers_count'])

7. ডেটা তালিকা প্রস্তুত করে ভিজ্যুয়ালাইজেশন শুরু করুন। এতে একটি অভিধান রয়েছে, যা প্লটের ধরন সংজ্ঞায়িত করে এবং x- এবং y-মানের জন্য ডেটা সরবরাহ করে। আপনি হয়তো ইতিমধ্যেই অনুমান করেছেন, হ্যাঁ আমরা প্রকল্পের নাম প্লট করার জন্য x-অক্ষ এবং তারা প্লট করার জন্য y-অক্ষ ব্যবহার করব।

উদাহরণ

data_plots = [{'type' : 'bar', 'x':repo_names , 'y': repo_stars}]

8. আমরা x-অক্ষ, y-অক্ষ এবং সামগ্রিকভাবে চার্টের জন্য শিরোনাম যোগ করব।

উদাহরণ

layout = {'title': 'GItHubs Most Popular Javascript Projects',
'xaxis': {'title': 'Repository'},
'yaxis': {'title': 'Stars'}}

9. প্লট করার সময়।

import requests
from plotly.graph_objs import Bar
from plotly import offline

site_url = 'https://api.github.com/search/repositories?q=language:javascript&sort=stars'

headers = {'Accept': 'application/vnd.github.v3+json'}
response = requests.get(site_url, headers=headers)
response_json = response.json()

repo_names, repo_stars = [], []
for repo_info in repositories:
repo_names.append(repo_info['name'])
repo_stars.append(repo_info['stargazers_count'])

data_plots = [{'type' : 'bar', 'x':repo_names , 'y': repo_stars}]
layout = {'title': 'GItHubs Most Popular Javascript Projects',
'xaxis': {'title': 'Repository'},
'yaxis': {'title': 'Stars'}}

fig = {'data': data_plots, 'layout': layout}
offline.plot(fig, filename='Most_Popular_JavaScript_Repos.html')

উদাহরণ

'Most_Popular_JavaScript_Repos.html'

আউটপুট

Most_Popular_JavaScript_Repos.html নিচের আউটপুট সহ কোডের মতো একই ডিরেক্টরিতে তৈরি করা হবে।

পাইথনের সাথে API ফলাফলগুলি কীভাবে ভিজ্যুয়ালাইজ করবেন


  1. পাইথন ম্যাটপ্লটলিবে ইন্টারপোলেশন সহ একটি নির্ভুল-রিকল বক্ররেখা কীভাবে আঁকবেন?

  2. বোকেহ (পাইথন) এর চিত্রগুলির সাথে কীভাবে কাজ করবেন?

  3. পাইথন ব্যবহার করে প্রশিক্ষণের ফলাফলগুলি কল্পনা করতে টেনসরফ্লো কীভাবে ব্যবহার করা যেতে পারে?

  4. কিভাবে Pygal পাইথনে একটি ট্রিম্যাপ কল্পনা করতে ব্যবহার করা যেতে পারে?