Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีสร้างภาพผลลัพธ์ API ด้วย Python


แนะนำตัว..

ข้อได้เปรียบที่ใหญ่ที่สุดอย่างหนึ่งของการเขียน API คือการดึงข้อมูลปัจจุบัน/ข้อมูลสด แม้ว่าข้อมูลจะมีการเปลี่ยนแปลงอย่างรวดเร็ว API จะได้รับข้อมูลล่าสุดเสมอ โปรแกรม API จะใช้ URL ที่เจาะจงมากเพื่อขอข้อมูลบางอย่างเช่น Topp 100 เพลงที่เล่นมากที่สุดในปี 2020 ใน Spotify หรือ Youtube Music ข้อมูลที่ร้องขอจะถูกส่งคืนในรูปแบบที่ประมวลผลได้ง่าย เช่น JSON หรือ CSV

Python อนุญาตให้ผู้ใช้เขียนการเรียก API ไปยัง URL เกือบทั้งหมดที่คุณนึกออก ในตัวอย่างนี้ ฉันจะแสดงวิธีแยกผลลัพธ์ API จาก GitHub และแสดงเป็นภาพ

หมายเหตุ - แผนคือการแสดงผลลัพธ์ API จาก Spotify แต่ Spotify ต้องการข้อกำหนดเบื้องต้นเพิ่มเติม ซึ่งอาจต้องใช้มากกว่า 1 โพสต์ ดังนั้นเราจะยึด GitHUb สำหรับโพสต์นี้

Github ซึ่งมักถูกเรียกว่าเป็นนักพัฒนา Facebook ช่วยให้เราเขียนการเรียก API เพื่อดึงข้อมูลที่หลากหลาย สมมติว่าคุณต้องการค้นหาที่เก็บ Javascript Github ที่มีดาวมากกว่านี้ GitHub ไม่ต้องการคีย์ API ในขณะที่ตัวอื่นอาจต้องการ

ทำอย่างไร..

1. ติดตั้งแพ็คเกจคำขอโดยเปิดพรอมต์คำสั่ง python และเริ่มส่งคำขอติดตั้ง pip

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() เพื่อแปลงข้อมูลเป็นพจนานุกรม Python

ตัวอย่าง

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 คีย์ซึ่งเราสามารถละเว้น incomplete_results ได้ ให้เราตรวจสอบที่เก็บแรกของเราตอนนี้

ตัวอย่าง

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. เวลาสำหรับการสร้างภาพข้อมูล มีข้อมูลมากมายให้ย่อย ดังนั้นวิธีที่ดีที่สุดคือเห็นภาพผลลัพธ์ จำไว้ว่า - "ภาพหนึ่งภาพมีค่าพันคำ"

ฉันได้กล่าวถึง matplotlib ในโพสต์อื่นแล้ว ดังนั้นสำหรับการเปลี่ยนแปลง เราจะสร้างแผนภูมิโดยใช้พล็อต

  • ติดตั้งโมดูล - พล็อต เราจะเริ่มต้นด้วยการนำเข้าพล็อต

ตัวอย่าง

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 ด้วย Python