Advent Calendar의 캘린더·참가자수를 그래프로 해 보았다.

개요



  • Qiita Advent Calendar 의 캘린더 수와 참가자 수를 그래프로 시각화해 보았습니다.



  • 이전 준비


    import urllib.request as req
    from bs4 import BeautifulSoup
    import matplotlib.pyplot as plt
    
    # スクレイピング
    url = "https://qiita.com/advent-calendar"
    res = req.urlopen(url) 
    bs = BeautifulSoup(res, "html.parser") 
    
    all_list = [] # 年数、カレンダー数、参加者数を入れるリスト
    for i in bs.select("div.container"):
        for j in i.select("div.row.adventCalendarYearList_element"):
            temp = [k.get_text() for k in j.find_all("dd")]
            temp.insert(0,j.find("div").get_text())
            all_list.append(temp)
    
    all_list.reverse() # 年数を昇順にソート
    
    # 年数
    year_list = [i[0] for i in all_list]
    # カレンダー数
    carender_list = [int(i[1]) for i in all_list]
    # 参加者数
    participant_list = [int(i[2]) for i in all_list]
    
    # 実行結果
    print(year_list)
    print(carender_list)
    print(participant_list)
    
  • 실행 결과
  • ['2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020']
    [1, 29, 82, 214, 377, 499, 590, 665, 771, 726]
    [25, 548, 1455, 3863, 6830, 9285, 11014, 12448, 14872, 11318]
    
  • 제대로 연수와 인원수를 취득할 수 있다



  • 캘린더 수 및 연수 그래프


    # カレンダー数と年数のグラフ
    plt.bar(year_list,carender_list, color='b', width=0.3, alpha=0.5)
    plt.ylabel("カレンダー数")
    plt.xlabel("年")
    plt.show()
    
  • 그래프



  • 참가자 수와 연수 그래프


    # 参加者数と年数のグラフ
    plt.bar(year_list,participant_list, color='g', width=0.3, alpha=0.5)
    plt.ylabel("参加者数")
    plt.xlabel("年")
    plt.show()
    
  • 그래프



  • 캘린더 수와 참가자 수를 정리한 그래프


    # カレンダー数と参加者数をまとめたグラフ
    plt.bar(year_list,carender_list, color='b', width=0.3, label='カレンダー数', alpha=0.5, align="edge")
    plt.bar(year_list,participant_list, color='g', width=0.3, label='参加者数', alpha=0.5, align="center")
    plt.ylabel("人数")
    plt.xlabel("年")
    plt.legend()
    
  • 그래프



  • 요약


  • 해마다 인원수가 늘어나고 있다!
  • 올해는 작년의 인원수를 넘는 것을 기대!

  • 전체 코드


    import urllib.request as req
    from bs4 import BeautifulSoup
    import matplotlib.pyplot as plt
    
    # スクレイピング
    url = "https://qiita.com/advent-calendar"
    res = req.urlopen(url) 
    bs = BeautifulSoup(res, "html.parser") 
    
    all_list = [] # 年数、カレンダー数、参加者数を入れるリスト
    for i in bs.select("div.container"):
        for j in i.select("div.row.adventCalendarYearList_element"):
            temp = [k.get_text() for k in j.find_all("dd")]
            temp.insert(0,j.find("div").get_text())
            all_list.append(temp)
    
    all_list.reverse() # 年数を昇順にソート
    
    # 年数
    year_list = [i[0] for i in all_list]
    # カレンダー数
    carender_list = [int(i[1]) for i in all_list]
    # 参加者数
    participant_list = [int(i[2]) for i in all_list]
    
    # 実行結果
    print(year_list)
    print(carender_list)
    print(participant_list)
    
    # カレンダー数と年数のグラフ
    plt.bar(year_list,carender_list, color='b', width=0.3, alpha=0.5)
    plt.ylabel("カレンダー数")
    plt.xlabel("年")
    plt.show()
    
    # 参加者数と年数のグラフ
    plt.bar(year_list,participant_list, color='g', width=0.3, alpha=0.5)
    plt.ylabel("参加者数")
    plt.xlabel("年")
    plt.show()
    
    # カレンダー数と参加者数をまとめたグラフ
    plt.bar(year_list,carender_list, color='b', width=0.3, label='カレンダー数', alpha=0.5, align="edge")
    plt.bar(year_list,participant_list, color='g', width=0.3, label='参加者数', alpha=0.5, align="center")
    plt.ylabel("人数")
    plt.xlabel("年")
    plt.legend()
    
    

    좋은 웹페이지 즐겨찾기