成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用Python挖掘GitHub的流行趨勢(shì)(下)

dack / 1124人閱讀

摘要:我們將數(shù)據(jù)幀轉(zhuǎn)換為基于列的時(shí)間序列然后,我們使用聚合方法按語(yǔ)言和年份重構(gòu)數(shù)據(jù),并按語(yǔ)言計(jì)算出現(xiàn)次數(shù)我們?cè)跅l形圖上表示結(jié)果上圖顯示了匯編,,中的多種編程語(yǔ)言,,和移動(dòng)語(yǔ)言,以及,和等現(xiàn)代語(yǔ)言。使用集合將確保我們具有唯一的值。

來(lái)源 | 愿碼(ChainDesk.CN)內(nèi)容編輯

愿碼Slogan | 連接每個(gè)程序員的故事

網(wǎng)站 | http://chaindesk.cn

愿碼愿景 | 打造全學(xué)科IT系統(tǒng)免費(fèi)課程,助力小白用戶(hù)、初級(jí)工程師0成本免費(fèi)系統(tǒng)學(xué)習(xí)、低成本進(jìn)階,幫助BAT一線(xiàn)資深工程師成長(zhǎng)并利用自身優(yōu)勢(shì)創(chuàng)造睡后收入。

官方公眾號(hào) | 愿碼 | 愿碼服務(wù)號(hào) | 區(qū)塊鏈部落

免費(fèi)加入愿碼全思維工程師社群 | 任一公眾號(hào)回復(fù)“愿碼”兩個(gè)字獲取入群二維碼


本文閱讀時(shí)長(zhǎng):8min

在本系列的第1部分中,我們收集了GitHub數(shù)據(jù)進(jìn)行分析。本文,我們將根據(jù)我們的要求分析這些數(shù)據(jù),以獲得關(guān)于GitHub上最熱門(mén)和流行的工具和語(yǔ)言的有趣見(jiàn)解。

到目前為止,我們已經(jīng)看到GitHub API提供了有關(guān)圍繞這些存儲(chǔ)庫(kù)的用戶(hù)活動(dòng)的代碼存儲(chǔ)庫(kù)和元數(shù)據(jù)的有趣信息集。在接下來(lái)的部分中,我們將分析這些數(shù)據(jù),通過(guò)分析其描述找出哪些是最受歡迎的存儲(chǔ)庫(kù)。當(dāng)下技術(shù)發(fā)展如此迅速,這種方法可以幫助我們保持在最新趨勢(shì)技術(shù)的頂端。為了找出什么是趨勢(shì)技術(shù),我們將分幾步執(zhí)行分析 :

根據(jù)描述檢測(cè)最熱門(mén)的主題/技術(shù)

確定全球最流行的編程語(yǔ)言

了解哪些編程語(yǔ)言用于頂級(jí)技術(shù)

確定最高技術(shù)

首先,我們將使用文本分析技術(shù)來(lái)確定2017年與存儲(chǔ)庫(kù)中的技術(shù)相關(guān)的最受歡迎的短語(yǔ)。我們的分析將集中在最常見(jiàn)的bigram。

我們導(dǎo)入一個(gè)實(shí)現(xiàn)n-gram搜索工具的nltk.collocation 模塊:

import nltk

from nltk.collocations import *

然后,我們將clean description列轉(zhuǎn)換為標(biāo)記列表:

list_documents = df["clean"].apply(lambda x: x.split()).tolist()

當(dāng)我們對(duì)文檔執(zhí)行分析時(shí),我們將使用方法from_documents而不是默認(rèn)的from_words 。這兩種方法的區(qū)別在于輸入的數(shù)據(jù)格式不同。在我們的案例中使用的那個(gè)用作參數(shù)列表,并且以文檔方式而不是語(yǔ)料庫(kù)方式搜索n-gram。它防止檢測(cè)由一份文件的最后一個(gè)單詞和另一份文件的第一個(gè)單詞組成的雙字符:

bigram_measures = nltk.collocations.BigramAssocMeasures()

bigram_finder = BigramCollocationFinder.from_documents(list_documents)

我們只考慮在文檔集中出現(xiàn)至少三次的二元組:

bigram_finder.apply_freq_filter(3)

我們可以使用不同的關(guān)聯(lián)度量來(lái)找到最佳的bi-gram,例如原始頻率,pmi,學(xué)生t或chi sq。我們將主要關(guān)注原始頻率測(cè)量,這是我們案例中最簡(jiǎn)單和最方便的指標(biāo)。

根據(jù)raw_freq 測(cè)量,我們得到前20個(gè)big:

bigrams = bigram_finder.nbest(bigram_measures.raw_freq,20)

我們也可以通過(guò)應(yīng)用score_ngrams 方法獲得他們的分?jǐn)?shù):

scores = bigram_finder.score_ngrams(bigram_measures.raw_freq)

所有其他措施都是作為BigramCollocationFinder的方法實(shí)現(xiàn)的??梢苑謩e用pmi、student_t和chi_sq替換raw_freq。但是,要?jiǎng)?chuàng)建可視化,我們需要實(shí)際的出現(xiàn)次數(shù)而不是分?jǐn)?shù)。我們使用ngram_fd.items()方法創(chuàng)建一個(gè)列表,然后按降序?qū)ζ溥M(jìn)行排序。

ngram = list(bigram_finder.ngram_fd.items())

ngram.sort(key=lambda item: item[-1], reverse=True)

它返回一個(gè)包含嵌入元組及其頻率的元組字典。我們將它轉(zhuǎn)換為一個(gè)簡(jiǎn)單的元組列表,加入bigram標(biāo)記:

frequency = [(" ".join(k), v) for k,v in ngram]

For simplicity reasons we put the frequency list into a dataframe:

df=pd.DataFrame(frequency)

And then, we plot the top 20 technologies in a bar chart:

import matplotlib.pyplot as plt

plt.style.use("ggplot")

df.set_index([0], inplace = True)

df.sort_values(by = [1], ascending = False).head(20).plot(kind = "barh")

plt.title("Trending Technologies")

plt.ylabel("Technology")

plt.xlabel("Popularity")

plt.legend().set_visible(False)

plt.axvline(x=14, color="b", label="Average", linestyle="--", linewidth=3)

for custom in [0, 10, 14]:

plt.text(14.2, custom, "Neural Networks", fontsize = 12, va = "center",

bbox = dict(boxstyle="square", fc="white", ec="none"))

plt.show()

增加一條額外的線(xiàn),幫助我們匯總與神經(jīng)網(wǎng)絡(luò)相關(guān)的所有技術(shù)。在這種情況下,通過(guò)索引選擇元素,手動(dòng)完成(0,10,14)。此操作可能對(duì)解釋有用。

前面的分析為我們提供了一套有趣的GitHub上最流行的技術(shù)。它包括軟件工程,編程語(yǔ)言和人工智能的主題 。需要注意的一件重要事情是神經(jīng)網(wǎng)絡(luò)周?chē)募夹g(shù)不止一次出現(xiàn),特別是深度學(xué)習(xí),TensorFlow和其他特定項(xiàng)目。這并不奇怪,因?yàn)樯窠?jīng)網(wǎng)絡(luò)是人工智能領(lǐng)域的重要組成部分,在過(guò)去幾年中已被大量使用和實(shí)踐過(guò)。所以,如果你是一個(gè)有抱負(fù)的程序員,對(duì)人工智能和機(jī)器學(xué)習(xí)感興趣,這是一個(gè)可以投入的領(lǐng)域!

編程語(yǔ)言

我們分析的下一步是比較不同編程語(yǔ)言之間的流行度。它將基于年度前1000個(gè)最受歡迎的存儲(chǔ)庫(kù)的樣本 。

首先,我們得到過(guò)去三年的數(shù)據(jù):

queries = ["created:>2017-01-01", "created:2015-01-01..2015-12-31",

"created:2016-01-01..2016-12-31"]

我們重用search_repo_paging 函數(shù)從GitHub API收集數(shù)據(jù),并將結(jié)果連接到新的數(shù)據(jù)幀。

df = pd.DataFrame()

for query in queries:

data = search_repo_paging(query)

data = pd.io.json.json_normalize(data)

df = pd.concat([df, data])

我們將數(shù)據(jù)幀轉(zhuǎn)換為基于create_at 列的時(shí)間序列

df["created_at"] = df["created_at"].apply(pd.to_datetime)

df = df.set_index(["created_at"])

然后,我們使用聚合方法groupby 按語(yǔ)言和年份重構(gòu)數(shù)據(jù),并按語(yǔ)言計(jì)算出現(xiàn)次數(shù):

dx = pd.DataFrame(df.groupby(["language",

df.index.year])["language"].count())

我們?cè)跅l形圖上表示結(jié)果:

fig, ax = plt.subplots()

dx.unstack().plot(kind="bar", title = "Programming Languages per Year", ax= ax)

ax.legend(["2015", "2016", "2017"], title = "Year")

plt.show()

上圖顯示了匯編,C,C#中的多種編程語(yǔ)言 ,

Java,Web和移動(dòng)語(yǔ)言,以及Python,Ruby和 Scala等現(xiàn)代語(yǔ)言 。通過(guò)三年的比較,我們看到了一些有趣的趨勢(shì)。我們注意到HTML,這是所有Web開(kāi)發(fā)的基石,在過(guò)去三年中一直保持穩(wěn)定。Ruby曾經(jīng)非常流行,但現(xiàn)在流行度下降了。Python的流行度,也是我們本文選擇的語(yǔ)言,正在上升。最后,跨設(shè)備編程語(yǔ)言 Swift最初由Apple 創(chuàng)建,但現(xiàn)在是開(kāi)源的,隨著時(shí)間的推移越來(lái)越受歡迎。這可能很有趣在未來(lái)幾年看,如果這些趨勢(shì)改變或持續(xù)很長(zhǎng)時(shí)間。

頂級(jí)技術(shù)中使用的編程語(yǔ)言

現(xiàn)在我們知道了儲(chǔ)存庫(kù)描述中引用的頂級(jí)編程語(yǔ)言和技術(shù)。在本節(jié)中,我們將嘗試組合這些信息,并找出每種技術(shù)的主要編程語(yǔ)言。

我們從前一部分中選擇了四種技術(shù)并打印相應(yīng)的編程語(yǔ)言。我們查找包含已清理的存儲(chǔ)庫(kù)描述的列,并創(chuàng)建一組與該技術(shù)相關(guān)的語(yǔ)言。使用集合將確保我們具有唯一的值。

technologies_list = ["software engineering", "deep learning", "open source", "exercise practice"]

for tech in technologies_list:

print(tech)

print(set(df[df["clean"].str.contains(tech)]["language"]))

software engineering

{"HTML", "Java"}

deep learning

{"Jupyter Notebook", None, "Python"}

open source

{None, "PHP", "Java", "TypeScript", "Go", "JavaScript", "Ruby", "C++"}

exercise practice

{"CSS", "JavaScript", "HTML"}

在對(duì)頂級(jí)技術(shù)的描述進(jìn)行文本分析,然后為它們提取編程語(yǔ)言后,我們注意到以下內(nèi)容:

· 我們將None 視為結(jié)果之一,因?yàn)槟承┘夹g(shù)是使用多種編程語(yǔ)言開(kāi)發(fā)的 。

· 遠(yuǎn)程學(xué)習(xí)是最受歡迎的,它使用Python作為主要的編程語(yǔ)言。它可能與TensorFlow相關(guān)聯(lián), TensorFlow是Google發(fā)布的一種流行的神經(jīng)網(wǎng)絡(luò)模塊,在Python中大量使用。

· 開(kāi)源是最受歡迎的存儲(chǔ)庫(kù)之一,它與幾乎每種編程語(yǔ)言都有關(guān)聯(lián),而且很有趣的是,開(kāi)源是如此的多樣化和流行。

· 我們還注意到人們學(xué)習(xí)和實(shí)踐幾種與web相關(guān)的技術(shù)。在選擇更復(fù)雜的方法之前,這可能是一個(gè)簡(jiǎn)單而有趣的方法。

· 最后,Java是軟件工程項(xiàng)目的首選,HTML是工程web頁(yè)面必不可少的。

您還可以使用此GitHub數(shù)據(jù)進(jìn)行更多分析,例如:

· 按技術(shù)確定頂級(jí)存儲(chǔ)庫(kù)

· 在forks, watchers, open issues等方面比較不同的技術(shù)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43748.html

相關(guān)文章

  • 使用Python挖掘GitHub流行趨勢(shì)(上)

    摘要:假設(shè)使用了最新的編程工具和技術(shù),分析可以幫助我們檢測(cè)最流行的技術(shù)。我們使用工具將結(jié)果轉(zhuǎn)換為干凈的并創(chuàng)建數(shù)據(jù)幀。后者表示實(shí)際使用代碼的人數(shù),因此它與不同的組相關(guān)。為此,我們使用了一個(gè)名為的庫(kù),該庫(kù)基于語(yǔ)言檢測(cè)項(xiàng)目。 showImg(https://segmentfault.com/img/remote/1460000018986014?w=1800&h=696); 來(lái)源 | 愿碼(Ch...

    Lionad-Morotar 評(píng)論0 收藏0
  • 拉勾數(shù)據(jù)崗位和熱門(mén)編程語(yǔ)言現(xiàn)狀分析

    摘要:另外數(shù)學(xué)成為了一個(gè)關(guān)鍵詞,編程語(yǔ)言主要是等,運(yùn)營(yíng)也出現(xiàn)在詞云中說(shuō)明數(shù)據(jù)分析師也需要有運(yùn)營(yíng)能力。 功能點(diǎn) 爬取數(shù)據(jù) 所有公司數(shù)據(jù),名稱(chēng)簡(jiǎn)寫(xiě),城市,行業(yè),職位數(shù)量,人數(shù)范圍,標(biāo)簽,介紹,融資階段,平均工資 github2016年度最受歡迎編程語(yǔ)言相應(yīng)年數(shù)薪水,城市,學(xué)歷要求,公司融資階段,公司行業(yè) 大數(shù)據(jù)行業(yè)五大崗位相應(yīng)年數(shù)薪水,城市,學(xué)歷要求,公司融資階段,公司行業(yè),崗位要求 編程語(yǔ)...

    atinosun 評(píng)論0 收藏0
  • 【譯】關(guān)于機(jī)器學(xué)習(xí)11個(gè)開(kāi)源工具

    摘要:雖然廣受歡迎,但是仍受到來(lái)自另外一個(gè)基于的機(jī)器學(xué)習(xí)庫(kù)的競(jìng)爭(zhēng)年出現(xiàn)的。還提供更傳統(tǒng)的機(jī)器學(xué)習(xí)功能的庫(kù),包括神經(jīng)網(wǎng)絡(luò)和決策樹(shù)系統(tǒng)。和的機(jī)器學(xué)習(xí)庫(kù)。顧名思義,是用于神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)的庫(kù),便于將瀏覽器用作數(shù)據(jù)工作臺(tái)。 關(guān)于機(jī)器學(xué)習(xí)的11個(gè)開(kāi)源工具 翻譯:瘋狂的技術(shù)宅英文標(biāo)題:11 open source tools to make the most of machine learning英文連...

    岳光 評(píng)論0 收藏0
  • 23種深度學(xué)習(xí)庫(kù)排行榜:TensorFlow最活躍、Keras最流行

    摘要:我們對(duì)種用于數(shù)據(jù)科學(xué)的開(kāi)源深度學(xué)習(xí)庫(kù)作了排名。于年月發(fā)布了第名,已經(jīng)躋身于深度學(xué)習(xí)庫(kù)的上半部分。是最流行的深度學(xué)習(xí)前端第位是排名較高的非框架庫(kù)。頗受對(duì)數(shù)據(jù)集使用深度學(xué)習(xí)的數(shù)據(jù)科學(xué)家的青睞。深度學(xué)習(xí)庫(kù)的完整列表來(lái)自幾個(gè)來(lái)源。 我們對(duì)23種用于數(shù)據(jù)科學(xué)的開(kāi)源深度學(xué)習(xí)庫(kù)作了排名。這番排名基于權(quán)重一樣大小的三個(gè)指標(biāo):Github上的活動(dòng)、Stack Overflow上的活動(dòng)以及谷歌搜索結(jié)果。排名結(jié)果...

    princekin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<