昨天看了火箭和勇士的G6大战,最终火箭3比4出局。


在火箭的近五年季后赛,一共有四次是和勇士交手,最终都以失败告终。


我平常是很少看NBA比赛的,所以看完之后便想写点东西


怀念一下那些年我们一起关注过,当然也打过的篮球。


涉及的东西不多,主要是NBA球员历年薪资情况以及效力球队情况。


这里的球员都是NBA的篮球巨星。


至于超巨是哪几个,估摸着大家各自都有各自的想法啦。


我也不多说~



/ 01 / 获取分析


数据从下面这个网站上获取,获取热门球员信息。


详情见下图。


火箭五年四遇勇士,终究还是败了。_java


这里以詹姆斯为例,首先查看他的网址ID。


火箭五年四遇勇士,终究还是败了。_java_02


接下来进入球员数据概况详情页。


查看他各赛季的薪资以及效力球队情况。


火箭五年四遇勇士,终究还是败了。_java_03

获取赛季、球队以及薪金数据。


火箭五年四遇勇士,终究还是败了。_java_04



/ 02 / 数据获取


具体代码如下。


import requests
from bs4 import BeautifulSoup

headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}


def get_player(player_id):
    url_2 = 'http://www.stat-nba.com' + player_id
    response_2 = requests.get(url=url_2, headers=headers)
    html_2 = response_2.text
    # 对请求结果进行编码解码处理,避免出现乱码
    html_2 = html_2.encode('ISO-8859-1')
    html_2 = html_2.decode('utf-8')
    # 提取信息
    soup_2 = BeautifulSoup(html_2, 'html.parser')
    name = soup_2.find(class_='name').get_text().split('/')[0]
    salarys = soup_2.find(id='player_salary')
    trs = salarys.find('tbody')
    # 获取信息
    for tr in trs.find_all('tr')[:-2]:
        # 年份
        season = tr.find(class_='current').get_text()
        if int(season[:1]) > 2:
            year = '19' + season.split('-')[0]
        else:
            year = '20' + season.split('-')[0]
        # 球队
        team = tr.find('a').get_text()
        # 薪水
        salary = tr.find_all(class_='normal')[1].get_text().replace('万美元''')
        print(year, name, team, salary)
        with open('nba.csv''a+', encoding='utf-8-sig'as f:
            f.write(year + ',' + name + ',' + team + ',' + salary + '\n')


def get_index():
    url_1 = 'http://www.stat-nba.com/playerList.php'
    response_1 = requests.get(url=url_1, headers=headers)
    html_1 = response_1.text
    # 对请求结果进行编码解码处理,避免出现乱码
    html_1 = html_1.encode('ISO-8859-1')
    html_1 = html_1.decode('utf-8')
    soup_1 = BeautifulSoup(html_1, 'html.parser')
    div = soup_1.find_all(class_='playerList')[1]
    for i in div.find_all(class_='name'):
        player_id = i.find('a')['href'][1:]
        try:
            get_player(player_id)
        except:
            pass


if __name__ == '__main__':
    get_index()


最后成功获取数据。


包含赛季,球员,效力球队,薪资信息。


将球员数据转化为特定格式,以便输出动态视频。


具体的可以看我之前写的一篇文章,文章链接如下。


Python数据可视化:25年GDP之变



一共784条数据。



/ 03 /  数据可视化


首先来看一下球员的薪资情况,从1990年到2020年。



薪资应该也是能体现出一个球员实力的。


每年又或者间隔几年,第一总会变,长江后浪推前浪


「乔丹」、「奥尼尔」、「加内特」、「麦迪」、「科比」、「詹姆斯」、「库里」七位登顶第一的球员。


接下来是对球员效力球队的情况进行分析。


首先读取数据。


import pandas as pd

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

# 读取数据
df = pd.read_csv('nba.csv', header=None, names=['date''name''team''salary'])


接下来对数据进行一些简单操作,分组汇总。


# 对球员以及球队分组计数
df1 = df.groupby(['name''team']).count().reset_index()
print(df1)


得出如下结果。


火箭五年四遇勇士,终究还是败了。_java_05


确实没想到哈登已经在火箭待了八年了。


从以前雷霆的三巨头,到如今的火箭当家球星。


不过还是有遗憾的,常规赛把把MVP,然而五进季后赛,四次都被勇士干掉了。


你说谁的心态不会蹦...


科比则是在湖人待了20年,24号球衣,湖人是永远不会忘记的。


下面对球员效力过的球队进行统计。


# 对球员效力的球队进行计数
df2 = df1['name'].value_counts().reset_index()
print(df2)


为什么想到这个呢,主要是之前奥尼尔的彩虹球衣给我留下了深刻的印象。


辗转反侧,颠沛流离,其中又有多少辛酸呢。


火箭五年四遇勇士,终究还是败了。_java_06


先看一下效力过球队多的那几位。


火箭五年四遇勇士,终究还是败了。_java_07


林书豪从尼克斯崛起过一段时间后,慢慢的又变得没什么声音,一直在兜兜转转,也是可惜。


魔兽霍华德处境也很尴尬,记得那时我刚看NBA的时候,就是霍华德、詹姆斯、科比的时代。


一个能单换詹姆斯的球员,随着时间的推移,也变得毫无存在感。


奥尼尔如同上面提到过的那样,彩虹球衣收集者,6支球队。


下面看一下只效力过一只球队的球员。


火箭五年四遇勇士,终究还是败了。_java_08


首先是勇士的三位全明星球员,库里、汤普森、格林。


还有雷霆的威少、湖人的科比、火箭的姚明,独行侠的诺维茨基。


诺天王夺冠的时候队伍还叫小牛,只不过现在改名为独行侠。


那一年确实是没想到诺天王能夺冠。


接下来看一下这些整个职业生涯只效力一只球队的球员,他们究竟效力那个球队。


names = []
for i in df2[df2['name'] == 1]['index']:
    names.append(i)

print(df1.loc[df1['name'].isin(names)].sort_values(by='date', ascending=False))


结果如下。


火箭五年四遇勇士,终究还是败了。_java_09


不少熟悉的面孔,你认识几个呢?


下面再看一下球员职业生涯时间最长的。


df3 = df.groupby(['name']).count().reset_index()
print(df3.sort_values(by='date', ascending=False))


结果如下。


火箭五年四遇勇士,终究还是败了。_java_10


今年退役的,上面就有两个,闪电侠—韦德和诺天王—诺维茨基。


两大传奇巨星退役,也预示着一代人的青春与回忆的落幕



/ 04 / 总结


昨天的比赛,火箭虽然输了,但是直到最后一刻火箭的队员还是没有选择放弃。


连着犯规制造投球机会,连进三个三分球。


虽败犹荣,只是成王败寇,可惜了呀。


即使勇士少了杜兰特,火箭还是没能够跨过那座山。


当然勇士也展现出了他们作为总冠军该有的实力。


球队的成员也在关键的时刻站了出来—一支总冠军球队该有的底蕴与实力。


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