plays.csv
파일의 playDescription 열에서 패스 플레이 시 패스를 한 선수, 패스를 받은 선수, sack을 한 선수 등의 이름을 추출하는 방식으로 데이터를 가공했다.
이것을 한 이유는 라인맨 대 라인맨의 상대 전적을 파악할 때, 상대 전적과 선수의 여러 가지 스펙 간 어떤 연관성이 있는지 데이터를 통해 파악하고 주요 변수를 선정하기 위해서이다.
이때 playDescription은 포지션에서 상대 전적의 '결과' 즉 패스가 성공했는지 여부를 보여준다.
playDescription
은 위와 같은 문자열 형식이었고 이 중 선수들의 이름을 뽑아서 포지션과 연결해 보는 것이 목표였다.
선수 이름 외 추출할 수 있는 다른 정보들은 같은 csv 파일의
gameClock
(해당 플레이의 진행 시간)playResult
(패스 길이, yard)passResult
(패스의 성공 여부)따라서 passFrom, passTo, sacked, scramble 등으로 playDescription의 문장 형식 종류를 나누어서 이름을 추출했다.
for i in range(plays.shape[0]):
if 'pass' in plays.loc[i, 'playDescription']:
plays.loc[i,'passFrom'] = str(plays.loc[i, 'playDescription']).split('pass')[0].strip().split(' ')[-1]
else:
continue
for i in range(plays.shape[0]):
if 'to' in plays.loc[i, 'playDescription']:
plays.loc[i,'passTo'] = str(plays.loc[i, 'playDescription']).split('to')[1].strip().split(' ')[0].strip('.')
else:
continue
for i in range(plays.shape[0]):
if 'sacked' in plays.loc[i, 'playDescription']:
plays.loc[i,'sacked'] = str(plays.loc[i, 'playDescription']).split('sacked')[0].strip().split(' ')[-1]
else:
continue
for i in range(plays.shape[0]):
if 'scrambles' in plays.loc[i, 'playDescription']:
plays.loc[i,'scrambles'] = str(plays.loc[i, 'playDescription']).split('scrambles')[0].strip().split(' ')[-1]
else:
continue