데이터 분석

4. 데이터프레임 활용하기

HJ76 2023. 6. 12. 16:40

데이터프레임 활용하기

import pandas as pd
import numpy as np
# kbo 선수의 일자별 기록
# https://www.koreabaseball.com/Record/Player/HitterDetail/Daily.aspx?playerId=76232
url = "https://www.koreabaseball.com/Record/Player/HitterDetail/Daily.aspx?playerId=76232"
df = pd.read_html(url, index_col=0)
df

문제

  • "AVG1", 'AB', "H", "2B", "3B", "HR" 컬럼만 남기고 제거하기
  • '루타' 파생변수를 생성하여 열 계산하기(H:1, 2B:2, 3B:3, HR:4)
  • 4월, 5월의 합계를 제거 후, 타율에 대한 날짜별 라인 그래프를 생성

 

1. "AVG1", 'AB', "H", "2B", "3B", "HR" 컬럼만 남기고 제거하기

# 타입 확인
type(df) # list
# concat으로 병합
df1 = pd.concat(df)
df1

 

# "AVG1", 'AB', "H", "2B", "3B", "HR" 컬럼만 남기고 제거
# 합계 인덱스도 제거
df1 = df1[["AVG1", "AB", "H", "2B", "3B", "HR"]].drop("합계")
df1

 

2. '루타' 파생변수를 생성하여 열 계산하기(H:1, 2B:2, 3B:3, HR:4)

# '루타' 파생변수 생성 후, 안타는 1, 2루타는 2, 3루타는 3, 홈런은 4로 합산해서 저장
df1["루타"] = df1["H"] + (df1["2B"]*2) + (df1["3B"]*3) + (df1["HR"]*4)
df1

 

3. 타율에 대한 날짜별 라인 그래프를 생성

# 결장한 날에는 AVG1이 '-'로 표시되기 때문에 float타입으로 값을 맞춰주기 위해 '-'를 NaN으로 변경
df1['AVG1'] = df1['AVG1'].replace('-', np.nan)

결장한 날 예시

 

# 결장한 날 행 삭제
df1.dropna(inplace=True)
df1

5월 24일이 사라짐

 

 

# 그래프로 그리기 위해, AVG1을 float타입으로 변경
df1['AVG1'] = df1['AVG1'].astype(float)

 

# 그래프로 그리기
df1.plot(y='AVG1')