栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Github编程语言数据分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Github编程语言数据分析

工程代码访问链接:https://gitee.com/cngmh/github-language-data-analysis

数据来源 kaggle 官方网站,详细访问链接:https://www.kaggle.com/datasets/isaacwen/github-programming-languages-data?select=issues.csv

分析 2011-2022 年,Github 上所使用语言的数据。

        1、从每年相关语言提出的问题数、PR数、repos数分析 2011-2022 年编程语言使用情况

        2、从每年相关语言提出的问题数、PR数分析编程语言的流行趋势

使用数据分别为:

issues:

         name: 语言名称; year: 年份; quarter: 季度; count: 与相应语言有关的repos的问题数目

prs:

        name:语言名称; year: 年份; quarter: 季度; count: 与相应语言有关的repos上的PR数

repos:

        language: 语言名称; num_repos: repos的数目

观察数据,从左往右分别为 issues.csv、prs: name.csv、repos.csv。

   

首先,导入相关的库,提取 .csv 数据,并简单的处理一下数据。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline
plt.style.use('ggplot') # 更改风格,R语言绘图库风格
plt.rcParams['font.sans-serif'] = 'SimHei'

#读取 .csv 数据
issues = pd.read_csv('issues.csv')
prs = pd.read_csv('prs.csv')
repos = pd.read_csv('repos.csv')

#去除 2022 年数据,因为 2022 年工作才刚刚开始
issues = issues[issues['year'] != 2022]
prs = prs[prs['year'] != 2022]
#去除 2011 年数据,因为 2011 年没有完整的 4 个季度的数据
issues = issues[issues['year'] != 2011]
prs = prs[prs['year'] != 2011]

  查看数据信息

# 语言和问题数
# 查看表格信息,数据很干净
print(issues.info())
print(issues.describe())

         打印出的信息,issues 中包含 3339 行、4列,且无空值。可以查看均值、标准差、分位数以及最大最小值。其他数据表格也可以这样查看信息。


Int64Index: 3339 entries, 27 to 3365
Data columns (total 4 columns):
 #   Column   Non-Null Count  Dtype 
---  ------   --------------  ----- 
 0   name     3339 non-null   object
 1   year     3339 non-null   int64 
 2   quarter  3339 non-null   int64 
 3   count    3339 non-null   int64 
dtypes: int64(3), object(1)
memory usage: 130.4+ KB
None
              year      quarter          count
count  3339.000000  3339.000000    3339.000000
mean   2016.866727     2.504642    9301.251872
std       2.520122     1.116717   28820.681767
min    2012.000000     1.000000     100.000000
25%    2015.000000     2.000000     225.000000
50%    2017.000000     3.000000     570.000000
75%    2019.000000     4.000000    3029.000000
max    2021.000000     4.000000  341480.000000

 从提出的issues数、PR数、repos数这三个方面分析流行编程语言 TOP10。

plt.figure(figsize=(12,4))
plt.subplot(131)
issues.groupby('name')['count'].sum().nlargest(10).plot(kind='bar')
plt.title('相应语言有关的repos的问题数目TOP10', fontsize=12)
plt.xlabel('语言名称')
plt.ylabel('repos的问题数目')
plt.subplot(132)
prs.groupby('name')['count'].sum().nlargest(10).plot(kind='bar')
plt.title('相应语言有关的repos上的PR数TOP10', fontsize=12)
plt.xlabel('语言名称')
plt.ylabel('repos的PR数目')
plt.subplot(133)
repos.groupby('language')['num_repos'].sum().nlargest(10).plot(kind='bar')
plt.title('相关语言repos的数目TOP10', fontsize=12)
plt.xlabel('语言名称')
plt.ylabel('repos的数目')

柱形图如下图所示。

        分析:图中的语言是2012-2021年受到关注的前10的语言。repos的问题数JavaScript最多,python其次,接着是java,还有其他语言。repos的PR数的前三与与问题数相同,其余语言排名略有不同,C不在前10内,HTML进入了前10。repos数量的前10的排名也有所变化。综合来看,JavaScript是使用和关注最多的语言。

        按年份分析流行编程语言 TOP5 及绝对走势。首先分析2012-2021年 repos问题数 TOP5 及绝对走势。

iss1 = issues[issues['year'] == 2012].groupby(['year','name'])['count'].sum().nlargest(5).reset_index()
for i in range(2013,2022):
    iss2 = issues[issues['year'] == i].groupby(['year','name'])['count'].sum().nlargest(5).reset_index()
    iss1 = pd.concat([iss1, iss2], axis=0)
iss1.groupby(['year','name'])['count'].sum().unstack().plot()
plt.title('相应语言repos问题数走势', fontsize=12)
plt.xlabel('年份')
plt.ylabel('repos的问题数目') 
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))

        分析:整体相关语言的repos的问题数在2012-2016处于上升解阶段,大概在2016-2017年处于顶峰,2018-2021年开始下降。其中JavaScript的repos的问题数远高于其他编程语言,说明该语言是最使用广泛和受关注的。Python与Jave的问题数相当。PHP与Rbuy在前期处于TOP5,而后不再是极热门语言。后期TypeScript和Go成为新晋TOP5。

        接下来看2012-2021年 repos RP数 TOP5 及绝对走势。

prs1 = prs[prs['year'] == 2012].groupby(['year','name'])['count'].sum().nlargest(5).reset_index()
for i in range(2013,2022):
    prs2 = prs[prs['year'] == i].groupby(['year','name'])['count'].sum().nlargest(5).reset_index()
    prs1 = pd.concat([prs1, prs2], axis=0)
prs1.groupby(['year','name'])['count'].sum().unstack().plot()
plt.title('相应语言repos PR数走势', fontsize=12)
plt.xlabel('年份')
plt.ylabel('repos的PR数目') 
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))

        分析:整体相关语言的repos的PR数在2012-2016处于上升解阶段,大概在2016-2017年处于顶峰,之后开始下降,并趋于一种稳定状态。其中JavaScript和Python的PR数远高于其他编程语言,说明这两门语言是Github用户使用最多的。PHP与Rbuy在前期处于TOP5,而后不再是极热门语言。后期TypeScript和Go成为新晋TOP5。并且Java与PHP、Rbuy、TypeScript和Go的PR数走势相似。

以上分析的是绝对走势。

        可以通过计算某年相应语言问题数或PR数与某年整体问题数或PR数比值来分析编程语言在某年内的使用占比 情况,并绘制出相对走势。因此接下来按年份分析流行编程语言TOP5及相对走势。

2012-2021年 repos问题数 TOP5 及相对走势。

iss2 = iss1.groupby(['year','name'])['count'].sum().unstack()
total = issues.groupby('year')['count'].sum()
iss2.apply(lambda x:x/total).plot()
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))

        分析:整体上JavaScript的问题数比例占比很大,但从2015-2021年一直处于下降状态,并且在2020-2021年间Python的问题数占比超过JavaScript成为最高。Java的问题数占比一直处于稳定状态,保持在0.12%左右。Ruby与PHP占比一直下降,在2017年之后退出TOP5。TypeScript和Go成为新晋语言,保持一定的上升趋势。

2012-2021年 repos PR数 TOP5 及相对走势

prs2 = prs1.groupby(['year','name'])['count'].sum().unstack()
total = prs.groupby('year')['count'].sum()
prs2.apply(lambda x:x/total).plot()
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))

 

         分析:在2012-2016年,JavaScript的PR数呈现大幅增长,Java小幅增长,其他语言整体都处于下降状态。2016-2021年,JavaScript的PR数占比开始下降,其他语言占比开始增长。

        整体分析:在2012-2021年间,JavaScript、Python、Java语言的issues、PR都稳定处于TOP3,说明是Github用户的主要使用语言。 

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号