S1到S9,545名职业选手,有多少人折戟全球总决赛?

S1到S9,545名职业选手,有多少人折戟全球总决赛?上周末英雄联盟 S9 总决赛落下帷幕 FPX 打败了 G2 获得了冠军

640?wx_fmt=gif

上周末英雄联盟S9总决赛落下帷幕,FPX打败了G2获得了冠军。

这次来看一下那些参加过英雄联盟全球总决赛的选手们。

来看看会不会发现什么有意思的东西。

数据来源于「Liquipedia」,一个国外的网站。

640?wx_fmt=png

https://liquipedia.net/leagueoflegends/Main_Page(复制到浏览器打开)

S1到S9,数据真的是应有尽有。

本次主要是获取历年参加英雄联盟全球总决赛选手们的信息。

640?wx_fmt=png

以及S4到S9历年Top20榜单选手们的信息。

640?wx_fmt=png

毕竟小凤凰夺冠了,排面还是要有的。

可怜的贡子哥,两个都没得...

01 数据获取

昨天晚上着急了一下,不小心把爬取Top20榜单的代码给删除了。

所以就给大家看看历年参赛选手信息爬取的代码。

总而言之还是比较简单的~

 
  
import requests
from bs4  import BeautifulSoup

headers = {
     'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}

for k  in range( 20112020):
    print(str(k) +  '年')
     # 获取信息
    url =  'https://liquipedia.net/leagueoflegends/World_Championship/' + str(k)
    response = requests.get(url=url, headers=headers)
    soup = BeautifulSoup(response.text,  'html.parser')
    table = soup.find_all(class_= 'sortable wikitable')
    tbody = table[ 0].find( 'tbody')

     for i  in tbody.find_all( 'tr')[ 1:]:
        td = i.find_all( 'td')
        item = {}
        item[ 'range'] = td[ 0].get_text()
         # 地区
        item[ 'country'] = td[ 1].get_text().replace( ' ''')
         # 数量
        item[ 'number'] = td[ 2].get_text().replace( ' ''').split( '/')[ 0]
         # 名字
        item[ 'names'] = td[ 3].get_text().replace( ' ''').replace( ','' ')
         # print(item)
         # 写入csv文件中
         with open( 'lol_message.csv''a+'as f:
            f.write(item[ 'country'] +  ',' + item[ 'number'] +  ',' + item[ 'names'] +  ',' + str(k) +  '\n')

最后成功获取到两个文件。

640?wx_fmt=png

比如那个一直在打野的Jankos,以及那个快乐的Pzi。

640?wx_fmt=png

02 数据分析

 
  
import pandas  as pd

# 设置列名与数据对齐
pd.set_option( 'display.unicode.ambiguous_as_wide'True)
pd.set_option( 'display.unicode.east_asian_width'True)
# 显示10行
pd.set_option( 'display.max_rows'10)

# 读取csv文件
df = pd.read_csv( 'lol_message.csv', header= None, names=[ 'country''number''names''year'])

# 对名字出现次数进行统计
list_names = []
for name  in df[ 'names']:
    res = name.split( ' ')
     for i  in res:
        list_names.append(i)
# 计数
dict = {}
for key  in list_names:
    dict[key] = dict.get(key,  0) +  1
# 排序
rank = sorted(dict.items(), key= lambda dict: dict[ 1], reverse= True)

# 保存为csv文件
for item  in rank:
    print(item[ 1], item[ 0])
     with open( 'lol_player.csv''a+'as f:
        f.write(item[ 0] +  ',' + str(item[ 1]) +  '\n')
640?wx_fmt=png

http://hanabi.data-viz.cn/index(复制到浏览器打开)

本次主要使用它的条形图以及动态条形图。

640?wx_fmt=png

接下来看一下历年各个地区参赛人数情况。

 
  
# 历年各地区参赛人数数据透视表
df1 = df.pivot_table(index=[ 'country'], columns= 'year', values= 'number', fill_value= 0).reset_index()
print(df1)
df1.to_csv( 'lol_year.csv')

使用网站上的动态条形图,对数据有要求,所以用了一波数据透视表。

「  滑动查看下一张图片  」

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

可以看到韩国一枝独秀,多年位居第一。

最后来看一下Top20榜单的情况。

 
  

import pandas as pd

# 设置列名与数据对齐
pd.set_option('display.unicode.ambiguous_as_wide'True)
pd.set_option('display.unicode.east_asian_width'True)
# 显示10行
pd.set_option('display.max_rows'10)

# 读取数据
df = pd.read_csv('lol_top.csv', header=None, names=['range''country''name''position''team''year'])
# 修改数据
df = df.replace('AD Cary''AD Carry')
df = df.replace('Bottom''AD Carry')
df = df.replace('Jungler''Jungle')
df = df.replace('Middle''Mid')
print(df)

# 统计选手出现在榜单的次数
df1 = df.groupby(['name'])[['country']].count().reset_index().sort_values(by='country', ascending=False)
print(df1)
df1.to_csv('lol_name.csv', encoding='utf-8-sig')

# 统计队伍出现在榜单的次数
df2 = df.groupby(['team'])[['name']].count().reset_index().sort_values(by='name', ascending=False)
print(df2)
df2.to_csv('lol_team.csv', encoding='utf-8-sig')

# 统计地区出现在榜单的次数
df3 = (df.groupby(['country'])[['name']].count().reset_index().sort_values(by='name', ascending=False))
print(df3)
df3.to_csv('lol_country.csv', encoding='utf-8-sig')

# 统计位置出现在榜单的次数
df4 = (df.groupby(['position'])[['country']].count().reset_index().sort_values(by='country', ascending=False))
print(df4)
df4.to_csv('lol_position.csv', encoding='utf-8-sig')

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

那些熟悉的昵称,总是能让你不禁回想起那么一批人(loler)。

万水千山总是情,点个「在看」行不行。

今天的文章 S1到S9,545名职业选手,有多少人折戟全球总决赛?分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-11 19:17
下一篇 2024-12-11 19:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83411.html