上周末英雄联盟S9总决赛落下帷幕,FPX打败了G2获得了冠军。
这次来看一下那些参加过英雄联盟全球总决赛的选手们。
来看看会不会发现什么有意思的东西。
数据来源于「Liquipedia」,一个国外的网站。
https://liquipedia.net/leagueoflegends/Main_Page(复制到浏览器打开)
S1到S9,数据真的是应有尽有。
本次主要是获取历年参加英雄联盟全球总决赛选手们的信息。
以及S4到S9历年Top20榜单选手们的信息。
毕竟小凤凰夺冠了,排面还是要有的。
可怜的贡子哥,两个都没得...
01 数据获取
昨天晚上着急了一下,不小心把爬取Top20榜单的代码给删除了。
所以就给大家看看历年参赛选手信息爬取的代码。
总而言之还是比较简单的~
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( 2011, 2020):
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')
最后成功获取到两个文件。
比如那个一直在打野的Jankos,以及那个快乐的Pzi。
02 数据分析
# 设置列名与数据对齐
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')
http://hanabi.data-viz.cn/index(复制到浏览器打开)
本次主要使用它的条形图以及动态条形图。
接下来看一下历年各个地区参赛人数情况。
df1 = df.pivot_table(index=[ 'country'], columns= 'year', values= 'number', fill_value= 0).reset_index()
print(df1)
df1.to_csv( 'lol_year.csv')
使用网站上的动态条形图,对数据有要求,所以用了一波数据透视表。
「 滑动查看下一张图片 」
可以看到韩国一枝独秀,多年位居第一。
最后来看一下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')
那些熟悉的昵称,总是能让你不禁回想起那么一批人(loler)。
万水千山总是情,点个「在看」行不行。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83411.html