歡迎光臨
每天分享高質量文章

觀察 Stack Overflow 趨勢的新姿勢: 看標簽的綜合瀏覽量

(點選上方藍字,快速關註我們)


來源:開源中國社群

www.oschina.net/news/97994/stack-overflow-trends-use-the-pageviews


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

看完本文有收穫?請轉發分享給更多人

關註「資料分析與開發」,提升資料技能

贊(0)

分享創造快樂