Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바암호
- 고전역학
- oracle
- write by GPT-4
- Database
- 리눅스
- 파이썬
- write by chatGPT
- 웹 크롤링
- 코틀린
- 뉴턴역학
- lombok
- 유닉스
- python
- 자바네트워크
- 소프트웨어공학
- JVM
- 시스템
- Java
- kotlin
- 자바
- android
- flet
- Spring boot
- chatGPT's answer
- 인프라
- NIO
- GPT-4's answer
- GIT
- 역학
Archives
- Today
- Total
Akashic Records
REST API 데이터 시각화 본문
728x90
이 파이썬 코드는 GitHub API를 통해 가장 많은 별을 받은 Python 프로젝트를 찾아 그 결과를 시각화합니다.
pip install requests # 라이브러리 추가
python_repos_visual.py
import requests
import plotly.express as px
def call_api():
url = "https://api.github.com/search/repositories"
url += "?q=language:python+stars&sort=stars&order=desc&page=1&per_page=10"
headers = {"Accept": "application/vnd.github.v3+json"}
r = requests.get(url, headers=headers)
print(f"Status code: {r.status_code}")
response_dict = r.json()
print(f"Total repositories: {response_dict['total_count']}")
print(f"complete results: {not response_dict['incomplete_results']}")
# 저장소 정보를 탐색합니다.
repo_dicts = response_dict['items']
repo_links, stars, hover_texts = [], [], []
for repo_dict in repo_dicts:
repo_name = repo_dict['name']
repo_url = repo_dict['html_url']
repo_link = f"<a href='{repo_url}'>{repo_name}</a>"
repo_links.append(repo_link)
stars.append(repo_dict['stargazers_count'])
# 툴팁을 만듭니다.
owner = repo_dict['owner']['login']
description = repo_dict['description']
hover_text = f"{owner}<br />{description}"
hover_texts.append(hover_text)
title = "Most-Starred Python Projects on GitHub"
labels = {'x': 'Repository', 'y': 'Stars'}
fig = px.bar(x=repo_links, y=stars,
title=title, labels=labels,
hover_name=hover_texts)
fig.update_layout(title_font_size=28, xaxis_title_font_size=20,
yaxis_title_font_size=20)
fig.update_traces(marker_color='SteelBlue', marker_opacity=0.6)
fig.show()
if __name__ == '__main__':
call_api()
1. 라이브러리 임포트
import requests
import plotly.express as px
requests
: 웹 서버와의 HTTP 요청을 보내기 위해 사용되는 라이브러리입니다.plotly.express
: 데이터 시각화를 위한 라이브러리입니다. 이 코드에서는 막대 그래프를 그리는데 사용됩니다.
2. API 호출 함수 정의
def call_api():
이 함수는 GitHub API를 호출하고 응답을 처리하여 시각화합니다.
3. API 요청
url = "https://api.github.com/search/repositories"
url += "?q=language:python+stars&sort=stars&order=desc&page=1&per_page=10"
headers = {"Accept": "application/vnd.github.v3+json"}
r = requests.get(url, headers=headers)
print(f"Status code: {r.status_code}")
- GitHub의 검색 API 엔드포인트로 요청을 보냅니다.
- 요청 매개변수로 Python 언어로 작성된 저장소 중 별이 많은 순으로 최대 10개의 저장소를 반환하도록 지정합니다.
- 요청 헤더에는 GitHub API 버전을 명시합니다.
- 응답의 상태 코드를 출력하여 API 호출 성공 여부를 확인합니다.
4. 응답 데이터 처리
response_dict = r.json()
print(f"Total repositories: {response_dict['total_count']}")
print(f"complete results: {not response_dict['incomplete_results']}")
repo_dicts = response_dict['items']
repo_links, stars, hover_texts = [], [], []
- API 응답을 JSON 형태로 파싱합니다.
- 전체 저장소 수와 완전한 결과 여부를 출력합니다.
- 각 저장소에 대한 정보를 추출하고 이를 시각화에 사용할 데이터 구조에 저장합니다.
5. 저장소 정보 추출 및 링크 생성
for repo_dict in repo_dicts:
repo_name = repo_dict['name']
repo_url = repo_dict['html_url']
repo_link = f"<a href='{repo_url}'>{repo_name}</a>"
repo_links.append(repo_link)
stars.append(repo_dict['stargazers_count'])
owner = repo_dict['owner']['login']
description = repo_dict['description']
hover_text = f"{owner}<br />{description}"
hover_texts.append(hover_text)
- 각 저장소의 이름, URL, 별의 수, 소유자, 설명을 추출합니다.
- 막대 그래프의 x축에 표시될 HTML 링크를 생성합니다.
- 호버 텍스트에 저장소 소유자와 설명을 추가하여 시각적 정보를 풍부하게 합니다.
6. 데이터 시각화
title = "Most-Starred Python Projects on GitHub"
labels = {'x': 'Repository', 'y': 'Stars'}
fig = px.bar(x=repo_links, y=stars,
title=title, labels=labels,
hover_name=hover_texts)
fig.update_layout(title_font_size=28, xaxis_title_font_size=20,
yaxis_title_font_size=20)
fig.update_traces(marker_color='SteelBlue', marker_opacity=0.6)
fig.show()
plotly.express
를 사용하여 막대 그래프를 생성합니다.- 그래프의 제목, 라벨, 호버 텍스트를 설정합니다.
- 그래프의 레이아웃과 트레이스 스타일을 업데이트합니다.
- 마지막으로 그래프를 화면에 표시합니다.
7. 메인 실행
if __name__ == '__main__':
call_api()
- 스크립트가 직접 실행될 때 `call_api` 함수를 호출합니다.
728x90
'Python for Beginners' 카테고리의 다른 글
[추가자료] 8.3 웹 프레임워크 - Django View (0) | 2024.06.19 |
---|---|
[추가자료] 8.3 웹 프레임워크 - Django 소개 (0) | 2024.06.19 |
GeoJSON 데이터 파일을 이용한 세계 지진의 크기와 위치 시각화 (0) | 2024.06.17 |
CSV 데이터 파일을 이용한 데이터 시각화 (0) | 2024.06.17 |
[추가자료] 9.3 데이터 시각화 plotly- dice (주사위) (1) | 2024.06.13 |
Comments