데이터 분석
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
# 그래프로 그리기 위해, AVG1을 float타입으로 변경
df1['AVG1'] = df1['AVG1'].astype(float)
# 그래프로 그리기
df1.plot(y='AVG1')