摘要:我們將數據幀轉換為基于列的時間序列然后,我們使用聚合方法按語言和年份重構數據,并按語言計算出現次數我們在條形圖上表示結果上圖顯示了匯編,,中的多種編程語言,,和移動語言,以及,和等現代語言。使用集合將確保我們具有唯一的值。
來源 | 愿碼(ChainDesk.CN)內容編輯
愿碼Slogan | 連接每個程序員的故事
網站 | http://chaindesk.cn
愿碼愿景 | 打造全學科IT系統免費課程,助力小白用戶、初級工程師0成本免費系統學習、低成本進階,幫助BAT一線資深工程師成長并利用自身優勢創造睡后收入。
官方公眾號 | 愿碼 | 愿碼服務號 | 區塊鏈部落
免費加入愿碼全思維工程師社群 | 任一公眾號回復“愿碼”兩個字獲取入群二維碼
本文閱讀時長:8min
在本系列的第1部分中,我們收集了GitHub數據進行分析。本文,我們將根據我們的要求分析這些數據,以獲得關于GitHub上最熱門和流行的工具和語言的有趣見解。
到目前為止,我們已經看到GitHub API提供了有關圍繞這些存儲庫的用戶活動的代碼存儲庫和元數據的有趣信息集。在接下來的部分中,我們將分析這些數據,通過分析其描述找出哪些是最受歡迎的存儲庫。當下技術發展如此迅速,這種方法可以幫助我們保持在最新趨勢技術的頂端。為了找出什么是趨勢技術,我們將分幾步執行分析 :
根據描述檢測最熱門的主題/技術
確定全球最流行的編程語言
了解哪些編程語言用于頂級技術
確定最高技術首先,我們將使用文本分析技術來確定2017年與存儲庫中的技術相關的最受歡迎的短語。我們的分析將集中在最常見的bigram。
我們導入一個實現n-gram搜索工具的nltk.collocation 模塊:
import nltk from nltk.collocations import *
然后,我們將clean description列轉換為標記列表:
list_documents = df["clean"].apply(lambda x: x.split()).tolist()
當我們對文檔執行分析時,我們將使用方法from_documents而不是默認的from_words 。這兩種方法的區別在于輸入的數據格式不同。在我們的案例中使用的那個用作參數列表,并且以文檔方式而不是語料庫方式搜索n-gram。它防止檢測由一份文件的最后一個單詞和另一份文件的第一個單詞組成的雙字符:
bigram_measures = nltk.collocations.BigramAssocMeasures() bigram_finder = BigramCollocationFinder.from_documents(list_documents)
我們只考慮在文檔集中出現至少三次的二元組:
bigram_finder.apply_freq_filter(3)
我們可以使用不同的關聯度量來找到最佳的bi-gram,例如原始頻率,pmi,學生t或chi sq。我們將主要關注原始頻率測量,這是我們案例中最簡單和最方便的指標。
根據raw_freq 測量,我們得到前20個big:
bigrams = bigram_finder.nbest(bigram_measures.raw_freq,20)
我們也可以通過應用score_ngrams 方法獲得他們的分數:
scores = bigram_finder.score_ngrams(bigram_measures.raw_freq)
所有其他措施都是作為BigramCollocationFinder的方法實現的。可以分別用pmi、student_t和chi_sq替換raw_freq。但是,要創建可視化,我們需要實際的出現次數而不是分數。我們使用ngram_fd.items()方法創建一個列表,然后按降序對其進行排序。
ngram = list(bigram_finder.ngram_fd.items()) ngram.sort(key=lambda item: item[-1], reverse=True)
它返回一個包含嵌入元組及其頻率的元組字典。我們將它轉換為一個簡單的元組列表,加入bigram標記:
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()
增加一條額外的線,幫助我們匯總與神經網絡相關的所有技術。在這種情況下,通過索引選擇元素,手動完成(0,10,14)。此操作可能對解釋有用。
前面的分析為我們提供了一套有趣的GitHub上最流行的技術。它包括軟件工程,編程語言和人工智能的主題 。需要注意的一件重要事情是神經網絡周圍的技術不止一次出現,特別是深度學習,TensorFlow和其他特定項目。這并不奇怪,因為神經網絡是人工智能領域的重要組成部分,在過去幾年中已被大量使用和實踐過。所以,如果你是一個有抱負的程序員,對人工智能和機器學習感興趣,這是一個可以投入的領域!
編程語言我們分析的下一步是比較不同編程語言之間的流行度。它將基于年度前1000個最受歡迎的存儲庫的樣本 。
首先,我們得到過去三年的數據:
queries = ["created:>2017-01-01", "created:2015-01-01..2015-12-31", "created:2016-01-01..2016-12-31"]
我們重用search_repo_paging 函數從GitHub API收集數據,并將結果連接到新的數據幀。
df = pd.DataFrame() for query in queries: data = search_repo_paging(query) data = pd.io.json.json_normalize(data) df = pd.concat([df, data])
我們將數據幀轉換為基于create_at 列的時間序列
df["created_at"] = df["created_at"].apply(pd.to_datetime) df = df.set_index(["created_at"])
然后,我們使用聚合方法groupby 按語言和年份重構數據,并按語言計算出現次數:
dx = pd.DataFrame(df.groupby(["language", df.index.year])["language"].count())
我們在條形圖上表示結果:
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#中的多種編程語言 ,
Java,Web和移動語言,以及Python,Ruby和 Scala等現代語言 。通過三年的比較,我們看到了一些有趣的趨勢。我們注意到HTML,這是所有Web開發的基石,在過去三年中一直保持穩定。Ruby曾經非常流行,但現在流行度下降了。Python的流行度,也是我們本文選擇的語言,正在上升。最后,跨設備編程語言 Swift最初由Apple 創建,但現在是開源的,隨著時間的推移越來越受歡迎。這可能很有趣在未來幾年看,如果這些趨勢改變或持續很長時間。
頂級技術中使用的編程語言現在我們知道了儲存庫描述中引用的頂級編程語言和技術。在本節中,我們將嘗試組合這些信息,并找出每種技術的主要編程語言。
我們從前一部分中選擇了四種技術并打印相應的編程語言。我們查找包含已清理的存儲庫描述的列,并創建一組與該技術相關的語言。使用集合將確保我們具有唯一的值。
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"}
在對頂級技術的描述進行文本分析,然后為它們提取編程語言后,我們注意到以下內容:
· 我們將None 視為結果之一,因為某些技術是使用多種編程語言開發的 。
· 遠程學習是最受歡迎的,它使用Python作為主要的編程語言。它可能與TensorFlow相關聯, TensorFlow是Google發布的一種流行的神經網絡模塊,在Python中大量使用。
· 開源是最受歡迎的存儲庫之一,它與幾乎每種編程語言都有關聯,而且很有趣的是,開源是如此的多樣化和流行。
· 我們還注意到人們學習和實踐幾種與web相關的技術。在選擇更復雜的方法之前,這可能是一個簡單而有趣的方法。
· 最后,Java是軟件工程項目的首選,HTML是工程web頁面必不可少的。
您還可以使用此GitHub數據進行更多分析,例如:
· 按技術確定頂級存儲庫
· 在forks, watchers, open issues等方面比較不同的技術
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43748.html
摘要:假設使用了最新的編程工具和技術,分析可以幫助我們檢測最流行的技術。我們使用工具將結果轉換為干凈的并創建數據幀。后者表示實際使用代碼的人數,因此它與不同的組相關。為此,我們使用了一個名為的庫,該庫基于語言檢測項目。 showImg(https://segmentfault.com/img/remote/1460000018986014?w=1800&h=696); 來源 | 愿碼(Ch...
摘要:另外數學成為了一個關鍵詞,編程語言主要是等,運營也出現在詞云中說明數據分析師也需要有運營能力。 功能點 爬取數據 所有公司數據,名稱簡寫,城市,行業,職位數量,人數范圍,標簽,介紹,融資階段,平均工資 github2016年度最受歡迎編程語言相應年數薪水,城市,學歷要求,公司融資階段,公司行業 大數據行業五大崗位相應年數薪水,城市,學歷要求,公司融資階段,公司行業,崗位要求 編程語...
摘要:雖然廣受歡迎,但是仍受到來自另外一個基于的機器學習庫的競爭年出現的。還提供更傳統的機器學習功能的庫,包括神經網絡和決策樹系統。和的機器學習庫。顧名思義,是用于神經網絡機器學習的庫,便于將瀏覽器用作數據工作臺。 關于機器學習的11個開源工具 翻譯:瘋狂的技術宅英文標題:11 open source tools to make the most of machine learning英文連...
摘要:我們對種用于數據科學的開源深度學習庫作了排名。于年月發布了第名,已經躋身于深度學習庫的上半部分。是最流行的深度學習前端第位是排名較高的非框架庫。頗受對數據集使用深度學習的數據科學家的青睞。深度學習庫的完整列表來自幾個來源。 我們對23種用于數據科學的開源深度學習庫作了排名。這番排名基于權重一樣大小的三個指標:Github上的活動、Stack Overflow上的活動以及谷歌搜索結果。排名結果...
閱讀 2397·2021-10-09 09:44
閱讀 2132·2021-10-08 10:05
閱讀 3423·2021-07-26 23:38
閱讀 2991·2019-08-28 18:16
閱讀 812·2019-08-26 11:55
閱讀 1820·2019-08-23 18:29
閱讀 2034·2019-08-23 18:05
閱讀 1364·2019-08-23 17:02