观察 Stack Overflow 趋势的新姿势: 看标签的综合浏览量

局长
 局长
发布于 2018年07月14日
收藏 6

获取 Stack Overflow 上的季度页面浏览量并不容易,在这篇文章中,我们将向你介绍这些数据的意义所在,以及获取这些数据的过程。

TensorFlow 真的比 Git 更受关注吗?

根据 Stack Overflow 的趋势统计工具,网站中打上 tensorflow 标签的问题现在比 git 的更受欢迎:

那这个数据是否有什么意义?虽然 tensorflow 获得了更多的关注,但 git 是开发者中最流行的开发工具之一 —— 无论是否在机器学习技术社区内。事实证明,这个趋势工具可以衡量每个标签下面的新问题数量,但这只是反映现象的一半情况。如果我们可以比较每个标签获得的网页浏览量百分比和问题的百分比:


上图:'git' 在 Stack Overflow 上的浏览量百分比,比较对象是 'tensorflow';下图:Stack Overflow 上每个标签的新问题百分比。可以看到,'git' 获得的新问题数量在减少,但拥有更高的页面浏览量。

所以发生了什么事?不妨看回图表,即使 tensorflow 标签下的问题每个季度都会创建得更多,但 git 标签下的问题获得的浏览数至少是 tensorflow 标签的 6 倍。

我们可以看看 .net vs firebase、c++ vs r 以及 .net vs typescript 的类似趋势:


这些图表显示,在 '.net' vs 'firebase','c++' vs 'r' 和 '.net' vs 'typescript' 中,其中一种技术获得了更多的浏览量,而另一种获得了更多的新问题数量。

因此你可以在这里看到,衡量新问题的数量只能反映一半的现象。如果你是 Stack Overflow 博客的粉丝,你会发现即使他们在很多地方都用到了这个页面浏览量的百分比。

所以结论就是,要观察 Stack Overflow 上相关技术的趋势不能单看一个指标,或许某种技术在某个指标下的分数很高,但这只能反映这种指标下的现象,要做到综合评估,就需要综合看待各项指标。像上面的情况,关于新技术的问题数量肯定是会不断增加的,但不能表明比较老的技术就呈现“疲软”的状态,因为浏览它们的用户依旧有很多,问题少的原因可能是绝大部分的问题都有答案了。相对而言,新技术仍处于“踩坑-填坑”阶段,自然就会产生更多的新问题。

其他有趣的比较

top 5 标签:Java, JavaScript, Python, C#, Android, PHP

  • Java 和 JavaScript 一直都是最受关注的标签 —— 但 JavaScript 标签每季度都会有更多的新问题。

  • Python 标签的问题数量正在快速赶上!不过与 JavaScript 相比,它仍然少得多,但 Python 标签的页面浏览量比 Java 和 JavaScript 要多。

  • 就页面浏览量而言,C# 也是排在前面的标签,不过 C# 标签的问题数量未能排在前五。另一方面,PHP 标签的问题数量十分多,不过它的页面浏览量也没能排在前五。


JavaScript 框架:AngularJS vs Angular, React, Vue

  • 如果 angularjs 正在死亡,谁将会替代它的位置?毫无疑问将会是 angular!你可以通过问题数量和浏览量明显看到新标签是如何接替旧标签的。

  • reactjs 一直处在上升的趋势。

  • vue.js 比其他替代方案更受大家关注,但仍有很长的路要走。


机器学习

  • TensorFlow 和 Kera 几乎占了机器学习领域的大多数问题,以及关注度。

  • PyTorch 和 MxNet 几乎无人问津。Caffe 在 2017 年表现强劲,但最近它的数据表现也逐渐滑落。


即将崛起的语言:Swift, Go, Haskell, Kotlin, Rust

  • 明显可以看到,Swift 的数据表现可谓是甩其他的一条街。

  • Go 标签的浏览量明显比问题数量要高。

  • Kotlin 是增长得最快的。

  • Haskell 和 Rust:两者都保持着稳定的发展趋势




相关代码

获取每季度的页面浏览量(Pageviews)

#standardSQL
WITH historic_views AS (  SELECT *, '201703' q  FROM `fh-bigquery.stackoverflow_archive.201703_posts_questions` 
  UNION ALL
  SELECT *, '201706' q 
  FROM `fh-bigquery.stackoverflow_archive.201706_posts_questions` 
  UNION ALL
  SELECT *,  '201709' q 
  FROM `fh-bigquery.stackoverflow_archive.201709_posts_questions` 
  UNION ALL
  SELECT *, '201712' q 
  FROM `fh-bigquery.stackoverflow_archive.201712_posts_questions` 
  UNION ALL
  SELECT *, '201803' q 
  FROM `fh-bigquery.stackoverflow_archive.201803_posts_questions` 
  UNION ALL
  SELECT *, '201806' q 
  FROM `fh-bigquery.stackoverflow_archive.201806_posts_questions` ), top_tags AS (    SELECT value FROM UNNEST((       SELECT APPROX_TOP_COUNT(tags, 5000)top  
       FROM `fh-bigquery.stackoverflow_archive.201803_posts_questions` 
       WHERE NOT tags LIKE '%|%'))    WHERE count > 10), views_per_tag AS (  SELECT tag, COUNTIF(DATE(creation_date) BETWEEN DATE_SUB(PARSE_DATE('%Y%m',  q), INTERVAL 3 MONTH) AND PARSE_DATE('%Y%m',  q)) questions
    , SUM(view_count) views_cum, PARSE_DATE('%Y%m',  q) q  FROM historic_views, UNNEST(SPLIT(tags, '|')) tag  GROUP BY tag, q
), views_per_q AS (  SELECT *, views_cum - LAG(views_cum, 1) OVER(PARTITION BY tag ORDER BY q) views  FROM views_per_tag
), percents AS (  SELECT *
    , 100*views/SUM(views) OVER(PARTITION BY q) views_percent
    , 100*questions/SUM(questions) OVER(PARTITION BY q) questions_percent  FROM views_per_q  WHERE views IS NOT null
  AND tag IN (SELECT value FROM top_tags)
)SELECT *FROM percents

值得注意的趋势差异

#standardSQL
WITH toptags AS (
  SELECT *
  FROM `fh-bigquery.stackoverflow.201806_stacko_tags_views` 
  WHERE q='2018-06-01'
  AND tag NOT IN ('string', 'git', 'sql')
  AND views_percent>0.05
)
SELECT a.tag, b.tag btag, a.views_percent - b.views_percent
FROM toptags a
JOIN toptags b
ON a.tag!=b.tag
AND a.views_percent>b.views_percent
AND a.questions_percent< b.questions_percent
ORDER by 3 DESC

参考:https://towardsdatascience.com/these-are-the-real-stack-overflow-trends-use-the-pageviews-c439903cd1a

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:观察 Stack Overflow 趋势的新姿势: 看标签的综合浏览量
加载中

精彩评论

久永
久永

引用来自“久永”的评论

这些提到的代码是用什么跑的?

引用来自“gzwxn”的评论

Stack Overflow offers the Data Exchange service, where people can publish and run arbitrary SQL queries. It’s easy to write a query to count the # of new questions, but it’s impossible to find the historical # of pageviews.

引用来自“久永”的评论

大哥,请用国语。
——土人,不懂洋文,所以才问。

引用来自“gzwxn”的评论

连这点英语都看不懂,那就不要上 StackOverflow 了,知道用什么跑的也没有用。
本来就不上啊。
整天都觉得受鄙视的,看看会两句洋文,是多么的有优越感啊?
还整天在网上喷留学生,洋人受到超国民待遇,不就是这么多假洋鬼子吗?
中国话不会说,会句洋文就当自己是上等人,不屑与不会洋文的为伍。
一个行业,一个有15亿人使用的语言,没有自己的行业话语权,整天只能仰洋人鼻息,还美其名曰“国际交流”需要,不以为耻,反以为荣。
中国人的脊椎,真的不容易长好。

最新评论(5

久永
久永

引用来自“久永”的评论

这些提到的代码是用什么跑的?

引用来自“gzwxn”的评论

Stack Overflow offers the Data Exchange service, where people can publish and run arbitrary SQL queries. It’s easy to write a query to count the # of new questions, but it’s impossible to find the historical # of pageviews.

引用来自“久永”的评论

大哥,请用国语。
——土人,不懂洋文,所以才问。

引用来自“gzwxn”的评论

连这点英语都看不懂,那就不要上 StackOverflow 了,知道用什么跑的也没有用。
本来就不上啊。
整天都觉得受鄙视的,看看会两句洋文,是多么的有优越感啊?
还整天在网上喷留学生,洋人受到超国民待遇,不就是这么多假洋鬼子吗?
中国话不会说,会句洋文就当自己是上等人,不屑与不会洋文的为伍。
一个行业,一个有15亿人使用的语言,没有自己的行业话语权,整天只能仰洋人鼻息,还美其名曰“国际交流”需要,不以为耻,反以为荣。
中国人的脊椎,真的不容易长好。
gzwxn
gzwxn

引用来自“久永”的评论

这些提到的代码是用什么跑的?

引用来自“gzwxn”的评论

Stack Overflow offers the Data Exchange service, where people can publish and run arbitrary SQL queries. It’s easy to write a query to count the # of new questions, but it’s impossible to find the historical # of pageviews.

引用来自“久永”的评论

大哥,请用国语。
——土人,不懂洋文,所以才问。
连这点英语都看不懂,那就不要上 StackOverflow 了,知道用什么跑的也没有用。
久永
久永

引用来自“久永”的评论

这些提到的代码是用什么跑的?

引用来自“gzwxn”的评论

Stack Overflow offers the Data Exchange service, where people can publish and run arbitrary SQL queries. It’s easy to write a query to count the # of new questions, but it’s impossible to find the historical # of pageviews.
大哥,请用国语。
——土人,不懂洋文,所以才问。
gzwxn
gzwxn

引用来自“久永”的评论

这些提到的代码是用什么跑的?
Stack Overflow offers the Data Exchange service, where people can publish and run arbitrary SQL queries. It’s easy to write a query to count the # of new questions, but it’s impossible to find the historical # of pageviews.
久永
久永
这些提到的代码是用什么跑的?
返回顶部
顶部