728x90
#시간변수를 생성하느 함수 정의
def lag_function(df,var_name, past):
# df = 시간변수를 생성할 데이터 프레임
# var_name= 시간변수 생성의 대상이 되는 변수 이름
# past= 몇 년 전의 성적을 생성할지 결정(정수형)
df.reset_index(drop=True, inplace=True)
#시간변수 생성
df['lag'+str(past)+'_'+var_name] = np.nan #결측치로 채워 넣어 놓는다
df['lag'+str(past)+'_'+'AB'] = np.nan
for col in ['AB',var_name]:
for i in range(0, (max(df.index)+1)):
val=df.loc[(df['batter_name']==df['batter_name'][i])& #이름이 가르시아 이면서
(df['year']==df['year'][i]-past),col] #년도는 i년도
#과거 기록이 결측치가 아니라면 값을 넣기
if len(val)!=0:
df.loc[i,'lag'+str(past)+'_'+col]=val.iloc[0] #i번째 행에 삽입
#30타수 미만 결측치 처리
df.loc[df['lag'+str(past)+'_'+'AB']<30,
'lag'+str(past)+'_'+var_name]=np.nan #var_name 행의 존재하는 30미만은 제거하고
df.drop('lag'+str(past)+'_'+'AB', axis=1, inplace=True) #AB열을 제거 하여 var_name만 남김
return df
위 코드를 이해 하는데 1시간이상이 걸렸어요
교재에는 짧게 설명이 되어 있어서 이 함수를 왜 만들고 무엇을 위한 목적인지 파악하는데 조차
이해가 안되었어요
일정도 새로 넉넉하게 짜야 할것같구요
이 실습에 대해서 어떤 방향으로 공부 할지 고민좀 해봐야 할것같아요
한번 실습했다고 제 것이 될것같진 않더라구요
코드도 공부가 되지만 일단 인사이트를 어떤 식으로 뽑는지 그런 견문을 넓히는게 우선인 것같네요
728x90
'Data Diary' 카테고리의 다른 글
2021-02-15(데이콘_버스 승차인원예측 실습) (0) | 2021.02.15 |
---|---|
2021-02-13 기록(데이콘_KBO 실습4) (0) | 2021.02.13 |
2021-02-11 기록(데이콘_KBO 실습2) (0) | 2021.02.11 |
2021-02-10 기록(데이콘_KBO 실습) (0) | 2021.02.10 |
2021-02-09 기록 (0) | 2021.02.09 |