《Hadoop大数据技术应用综合训练》----以NBA冠军球队计数为例
一、综合训练要求
案例中需要处理的文件为nba.csv,该文件记录了NBA历年总冠军的详细情况,文件的字段从左到右依次为比赛年份、具体日期、冠军、比分、亚军和当年MVP(联盟MVP是Most Valuable Player缩写,即最有价值球员),每个字段以半角逗号“,”进行分割,如图1所示。
图1 NBA原始文件数据
本训练要求对此数据集做如下处理:
(1)数据清洗;
(2)统计各球队获得冠军数量;并将东西部球队的统计结果分别存储。
二、实现过程
(一)数据处理说明
NBA的历史较为久远,从1947年至2019年的这段时间里,一些球队已经不存在了(例如:芝加哥牡鹿队),还有部分球队的队名发生了变化(例如:明尼阿波利斯湖人队,现在的名称是洛杉矶湖人队);所以,对于已经不存在的球队,继续保存其名称,不做修改;但是已经更改名称的球队,需要映射为现在球队的名称;
另外,因为要对球队进行东西分区的统计,所以要对球队添加东西分区的标识。
(二)解题思路
添加球队新老名称的映射,读取每行数据时,遇到老的名称,将其替换为新名称;添加东西分区球队的映射,读取数据时,分析冠军球队所在分区,然后添加标识(东部球队以“E”标识,西部球队以“W”标识,未分区的球队以“F”标识)
需要注意的是,美国NBA联盟是从1970年开始进行东西分区的,因此需要对年份进行判断。
(三)核心代码
import pandas as pd
import repd.set_option("display.unicode.east_asian_width",True)
pd.set_option('display.width',1000)
pd.set_option('display.max_columns',None)
data = pd.read_excel("NBA.xlsx")
team_new_old = []
team_old = []
dict_team = {}
with open('新旧队名映射.txt','r', encoding='utf-8') as f:lines = f.readlines()