小白也能三分鐘實(shí)現(xiàn)可視化分析GitHub上最受歡迎python項(xiàng)目

學(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作為全球最大 同性交友網(wǎng)站 軟件項(xiàng)目的托管平臺(tái)咳榜,這是一個(gè)能讓程序猿協(xié)作開發(fā)項(xiàng)目的網(wǎng)站夏醉。
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)求各種信息雇毫。下面就為大家介紹這種方法,干貨滿滿踩蔚,記得收藏棚放!

  1. 首先需要安裝Requests,可使用pip進(jìn)行安裝

python -m pip install requests

  1. 處理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

  1. 處理響應(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é)果球凰。

  1. 安裝plotly狮腿,可使用pip進(jìn)行安裝

python -m pip install plotly

  1. 使用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)
  1. 改進(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è)伊者。

python_repos

至此英遭,我們對(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真的不難昔搂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市输拇,隨后出現(xiàn)的幾起案子摘符,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逛裤,死亡現(xiàn)場(chǎng)離奇詭異瘩绒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)带族,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門锁荔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝙砌,你說我怎么就攤上這事阳堕。” “怎么了择克?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵恬总,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我肚邢,道長(zhǎng)壹堰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任骡湖,我火速辦了婚禮贱纠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘响蕴。我一直安慰自己谆焊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布换途。 她就那樣靜靜地躺著懊渡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪军拟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天誓禁,我揣著相機(jī)與錄音懈息,去河邊找鬼。 笑死摹恰,一個(gè)胖子當(dāng)著我的面吹牛辫继,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俗慈,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼姑宽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了闺阱?” 一聲冷哼從身側(cè)響起炮车,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瘦穆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纪隙,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年扛或,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绵咱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熙兔,死狀恐怖悲伶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情住涉,我是刑警寧澤拢切,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站秆吵,受9級(jí)特大地震影響淮椰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纳寂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一主穗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毙芜,春花似錦忽媒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至隘冲,卻和暖如春闹瞧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背展辞。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工奥邮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罗珍。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓洽腺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親覆旱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蘸朋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容