學(xué)完python入門的基礎(chǔ)知識(shí)际乘,但是不知道去哪找練手項(xiàng)目?
想去應(yīng)聘python開發(fā)工程師漂佩,卻沒有拿的出手的實(shí)戰(zhàn)經(jīng)驗(yàn)脖含?
說到去哪找開源代碼,大家應(yīng)該就能想到Github投蝉。沒上過Github养葵,都不敢說自己是程序猿。
可是對(duì)于一些新手小白來說瘩缆,可能還不太了解這個(gè)平臺(tái)关拒,今天我就帶大家一起來看看。
Github是什么
Github作為全球最大
Github用戶可以給喜歡的項(xiàng)目點(diǎn)贊(star)以表支持爽锥,還可以跟蹤自己可能想使用的項(xiàng)目涌韩。
可以說Github為程序員提供了生產(chǎn)力工具,幫助開發(fā)者們更高效地構(gòu)建軟件氯夷。
獲取Github上最受歡迎的python項(xiàng)目
可是如何才能快速找到最受歡迎的python項(xiàng)目呢臣樱?
如果能自動(dòng)下載Github上星級(jí)最高的python項(xiàng)目的信息,并且對(duì)這些信息進(jìn)行可視化分析該多好啊腮考。
Github的API讓你能夠通過API調(diào)用來請(qǐng)求各種信息雇毫。下面就為大家介紹這種方法,干貨滿滿踩蔚,記得收藏棚放!
- 首先需要安裝Requests,可使用pip進(jìn)行安裝
python -m pip install requests
- 處理API響應(yīng)
下面來編寫一個(gè)程序馅闽,它自動(dòng)執(zhí)行API調(diào)用并處理結(jié)果飘蚯,以找出Github上星級(jí)最高的python項(xiàng)目
import requests
# 執(zhí)行API調(diào)用并存儲(chǔ)響應(yīng)
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
headers = {'Accept': 'application/vnd.github.v3+json'}
r = requests.get(url, headers=headers)
print(f"Status code: {r.status_code}")
# 將API響應(yīng)賦給一個(gè)變量
response_dict = r.json()
print(f"Total repositories: {response_dict['total_count']}")
返回結(jié)果,狀態(tài)碼200表示請(qǐng)求成功福也,倉(cāng)庫(kù)總數(shù)7570194局骤。
Status code: 200
Total repositories: 7570194
- 處理響應(yīng)字典
# 探索有關(guān)倉(cāng)庫(kù)的信息
repo_dicts = response_dict['items']
print(f"Repositories returned: {len(repo_dicts)}")
# 研究有關(guān)倉(cāng)庫(kù)的信息
print("\nSelected information about each repository:")
for repo_dict in repo_dicts:
print(f"\nName: {repo_dict['name']}")
print(f"Owner: {repo_dict['owner']['login']}")
print(f"Stars: {repo_dict['stargazers_count']}")
print(f"Repository: {repo_dict['html_url']}")
print(f"Created: {repo_dict['created_at']}")
print(f"Updated: {repo_dict['updated_at']}")
print(f"Description: {repo_dict['description']}")
本次共返回了30個(gè)倉(cāng)庫(kù)信息,以第一個(gè)項(xiàng)目為例暴凑,打印了該項(xiàng)目的名稱峦甩、所有者、點(diǎn)贊數(shù)现喳、在Github上的URL凯傲、創(chuàng)建時(shí)間犬辰、更新時(shí)間、項(xiàng)目描述:
Repositories returned: 30
Selected information about each repository:
Name: public-apis
Owner: public-apis
Stars: 151203
Repository: https://github.com/public-apis/public-apis
Created: 2016-03-20T23:49:42Z
Updated: 2021-08-21T07:21:05Z
Description: A collective list of free APIs
數(shù)據(jù)分析可視化圖表
在上述輸出中冰单,有些有趣的項(xiàng)目值得看一看忧风。但不要在這上面花費(fèi)太多時(shí)間,因?yàn)榧磳?chuàng)建的可視化圖表能讓你更容易地看清結(jié)果球凰。
- 安裝plotly狮腿,可使用pip進(jìn)行安裝
python -m pip install plotly
- 使用Plotly可視化倉(cāng)庫(kù)
添加自定義工具提示、在圖表中添加可單擊的鏈接
from plotly import offline
# 處理結(jié)果
response_dict = r.json()
repo_dicts = response_dict['items']
repo_links, stars, labels = [], [], []
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']
label = f"{owner}<br />{description}"
labels.append(label)
- 改進(jìn)Plotly圖表
給柱狀圖指定顏色和邊框呕诉,添加不透明度缘厢,設(shè)置標(biāo)題字體大小。
# 可視化
data = [{
'type': 'bar',
'x': repo_links,
'y': stars,
'hovertext': labels,
'marker': {
'color': 'rgb(60, 100, 150)',
'line': {'width': 1.5, 'color': 'rgb(25, 25, 25)'}
},
'opacity': 0.6,
}]
my_layout = {
'title': 'GitHub上最受歡迎的Python項(xiàng)目',
'titlefont': {'size': 28},
'xaxis': {
'title': '倉(cāng)庫(kù)',
'titlefont': {'size': 24},
'tickfont': {'size': 14},
},
'yaxis': {
'title': '星數(shù)',
'titlefont': {'size': 24},
'tickfont': {'size': 14},
},
}
fig = {'data': data, 'layout': my_layout}
offline.plot(fig, filename='python_repos.html')
可視化結(jié)果展示
將鼠標(biāo)指向條形時(shí)甩挫,將顯示項(xiàng)目的描述和所有者贴硫。
用戶可以單擊圖表底端的項(xiàng)目名,以訪問項(xiàng)目在Github上的主頁(yè)伊者。
至此英遭,我們對(duì)API獲取數(shù)據(jù)生成了可視化圖表,它是交互性的亦渗,包含了豐富的信息!
其實(shí)挖诸,這也只是個(gè)簡(jiǎn)單的小例子,大家不妨上手試一試法精。編程不能光看書多律,要多用多實(shí)踐才能融會(huì)貫通。身邊想學(xué)Python的同學(xué)我都給他們推薦過這本《Python編程 從入門到實(shí)踐》搂蜓,有點(diǎn)語(yǔ)言基礎(chǔ)的可能會(huì)覺得它比較“啰嗦”狼荞;但對(duì)小白來說,作為入門書它真的太友好了帮碰,每一個(gè)知識(shí)點(diǎn)相味、每一條步驟都講解的很清楚;每節(jié)還配有“動(dòng)手試一試”環(huán)節(jié)殉挽,還安排了實(shí)踐項(xiàng)目丰涉。我認(rèn)為只要有心學(xué),邊看邊練此再,入門Python真的不難昔搂。