Skip to content

choosunsick/KBO_data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 

Repository files navigation

KBO.data

μ•ˆλ…•ν•˜μ„Έμš”. μ™ΈλŒ€ μ² ν•™κ³Ό μŠ€ν„°λ”” κ·Έλ£Ή LOPES의 좔선식 μž…λ‹ˆλ‹€.

데이터 뢄석을 κ³΅λΆ€ν•˜λ©΄μ„œ λŠλ‚€ 점은 ν•™μŠ΅μ— 맞게 κ΅¬μ„±λœ 데이터가 적고 이런 ν˜•νƒœμ˜ 자료λ₯Ό ν˜„μ‹€μ μœΌλ‘œ 찾아보기 μ–΄λ ΅λ‹€λŠ” μ μž…λ‹ˆλ‹€. λ¬Όλ‘  캐글(Kaggle)μ΄λ‚˜ μ„œμšΈμ‹œ ν†΅κ³„μžλ£Œκ°™μ΄ μ˜€ν”ˆλœ 곳듀도 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ νŠΉμ • μžλ£Œλ“€μ„ λ‹€λ£° λΆ„μ„μ˜ λͺ©μ μ„±μ΄ λΆ€μ‘±ν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜μ•„κ°€ 자료λ₯Ό μ‹€μ œλ‘œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ 뢄석해야 ν•˜λŠ”μ§€ μ ‘κ·Όν•˜κΈ°κ°€ 쉽지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ λŒ€μ€‘μ μœΌλ‘œλ„ 인기가 μžˆλŠ” ν•œκ΅­μ˜ ν”„λ‘œμ•Όκ΅¬ 자료λ₯Ό 톡해 곡뢀해 보기둜 ν–ˆμŠ΅λ‹ˆλ‹€.

μš°μ„  자료λ₯Ό λͺ¨μœΌκΈ° μœ„ν•΄ KBO ν™ˆνŽ˜μ΄μ§€μ— λ“±λ‘λœ 야ꡬ 자료λ₯Ό λͺ¨μœΌκ³  보기 μ’‹κ²Œ μ •λ¦¬ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 넀이버와 같은 ν¬ν„Έμ‚¬μ΄νŠΈμ—λ„ 야ꡬ μžλ£Œκ°€ μžˆλ”κ΅°μš”. 거기에 μžˆλŠ” 야ꡬ μžλ£ŒλŠ” 2010λ…„ μ΄μ „μ˜ μžλ£Œλ„ μžˆκΈ°μ— κ·Έμͺ½μœΌλ‘œλ„ μž‘μ—…ν•˜μ—¬ 데이터λ₯Ό μΆ”κ°€ν•˜λ € ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 넀이버에 μžˆλŠ” μžλ£ŒλŠ” 결츑값이 있고, λΆ€μ •ν™•ν•˜κ±°λ‚˜ λΆ€μ‘±ν•œ κ²½μš°κ°€ λ§Žμ•„μ„œ 곡식적인 KBO μ‚¬μ΄νŠΈλ§Œμ„ μ°Έμ‘°ν•˜μ—¬ 자료λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

데이터 μ„€λͺ… 및 정리 방법

저희가 μˆ˜μ§‘ν•˜κ³  κ°€κ³΅ν•œ μžλ£ŒλŠ” 2010λ…„λΆ€ν„° 2018λ…„ μ˜¬μŠ€νƒ€μ „κΉŒμ§€μ˜ KBO ν”„λ‘œμ•Όκ΅¬ 데이터가 μžˆμŠ΅λ‹ˆλ‹€. KBO_light μžλ£ŒλŠ” 2010λ…„λΆ€ν„° 2018λ…„ μ˜¬μŠ€νƒ€μ „κΉŒμ§€μ˜ 데이터λ₯Ό ν•©μΉœ μžλ£Œμž…λ‹ˆλ‹€. 이 μžλ£Œλ“€μ€ μ•žμœΌλ‘œλ„ μ›”λ§ˆλ‹€ 계속 λ°μ΄νŠΈν•  μ˜ˆμ •μž…λ‹ˆλ‹€. μžλ£ŒλŠ” 크둀링을 톡해 μˆ˜μ§‘ν•˜κ³  λͺ¨λ‘ μ •λ¦¬ν•œ λ‹€μŒμ—λŠ” 직접 눈으둜 잘λͺ»λœ λΆ€λΆ„μ΄λ‚˜ λΉ μ§„ 뢀뢄이 μžˆλŠ”μ§€ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. μ΅œμ’…μ μœΌλ‘œ ν™•μΈν•œ ν›„, csv 파일둜 λ§Œλ“€κ³  Rμ—μ„œ 경기에 κ΄€ν•œ 정보듀을 ν™ˆνŒ€κ³Ό μ›μ •νŒ€, 점수, μ •κ·œμ‹œμ¦Œ, μ‹œλ²”κ²½κΈ°μ˜ ꡬ뢄 λ“±μœΌλ‘œ 열을 λ‚˜λˆ„μ–΄μ„œ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 과정을 거쳐 자료λ₯Ό μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

κ°„λž΅ν•œ 데이터 μ‚¬μš©λ°©λ²•

κΉƒν—ˆλΈŒμ—μ„œ 데이터λ₯Ό λ‹€μš΄λ°›κ±°λ‚˜ μ‚¬μš©ν•˜μ‹œκΈ° μ–΄λ €μš°μ‹  뢄듀은 "https://lopes.hufs.ac.kr/KBO/" κΈ°λ³Έ μ£Όμ†Œμ— μ—΄κ³  싢은 파일 이름을 λΆ™μ—¬μ„œ Rμ—μ„œ μ—΄μ–΄ μ‚¬μš©ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 2010λ…„λΆ€ν„° 2018λ…„κΉŒμ§€μ˜ μ „μ²΄μžλ£Œλ₯Ό μ½μ–΄μ˜¨λ‹€κ³  ν•˜λ©΄ "KBO_light.csv"λ₯Ό μœ„ μ£Όμ†Œμ— λΆ™μ—¬μ„œ μ•„λž˜μ™€ 같이 읽고 μ‚¬μš©ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

KBO.light.URL<-"https://lopes.hufs.ac.kr/KBO/KBO_light.csv"
KBO.light<-read.table(file = KBO.light.URL, header= TRUE, sep=",",stringsAsFactors = FALSE)
doosan_home<-KBO.light[KBO.light$λΉ„κ³ =="μ •κ·œμ‹œμ¦Œ"&KBO.light$ν™ˆνŒ€=="두산",]
doosan_away<-KBO.light[KBO.light$λΉ„κ³ =="μ •κ·œμ‹œμ¦Œ"&KBO.light$μ›μ •νŒ€=="두산",]
mean(doosan_home$μ›μ •νŒ€μ μˆ˜) #10λ…„κ°„ 두산이 ν™ˆμΌ λ•Œ 평균 싀점
mean(doosan_away$ν™ˆνŒ€μ μˆ˜) # 10λ…„κ°„ 두산이 μ›μ •νŒ€μΌ λ•Œ 평균 싀점

μ‚¬μš© λΆ„μ•Ό

νŠΉμ •νŒ€μ˜ 연도에 λ”°λ₯Έ 총득점과 μ΄μ‹€μ μ˜ λ³€ν™”, 연도별 νŒ€ κ°„μ˜ μƒλŒ€μ „μ  ν˜Ήμ€ 연속적인 ν¬μŠ€νŠΈμ‹œμ¦Œ μ§„μΆœ μ—¬λΆ€ 등을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μ μˆ˜μ™€ ν™ˆ & μ›μ •νŒ€, μ‹œμ¦Œ 정보 등을 κ΅¬λΆ„ν•˜μ—¬ κ²½κΈ° 정보λ₯Ό μ‰½κ²Œ λ‹€λ£° 수 있으며 λ‹€μ–‘ν•œ 기둝듀을 μ‹œκ°ν™”ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‘μš©μ‚¬λ‘€ μ½”λ“œ μ„€λͺ…

μ•„λž˜μ˜ μ½”λ“œλŠ” 2010λ…„λΆ€ν„° 2018λ…„ μ „λ°˜κΈ°κΉŒμ§€ 전체가 μ €μž₯된 KBO_lightνŒŒμΌμ„ 읽고 νŠΉμ •νŒ€μ˜ 연도별 총득점과 총싀점을 κ΅¬ν•˜κ³  그것을 κ·Έλ €λ³΄λŠ” μ½”λ“œμž…λ‹ˆλ‹€. Runs.and.score ν•¨μˆ˜λŠ” 데이터와 μ›ν•˜λŠ” νŒ€μ΄λ¦„μ„ 인자둜 λ°›μ•„ ν•΄λ‹Ή νŒ€μ˜ 연도별 총득점과 총싀점을 κ³„μ‚°ν•©λ‹ˆλ‹€. aggregate ν•¨μˆ˜λ₯Ό 톡해 ν™ˆνŒ€κ³Ό μ›μ •νŒ€μ—μ„œμ˜ 득점과 싀점을 λͺ¨μœΌκ³ , 각각의 κ²°κ³Όλ₯Ό μ„œλ‘œ 더해 연도별 총득점과 총싀점을 κ΅¬ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ κ΅¬ν•œ 연도별 총 득,싀점은 νŒ€μ΄λ¦„κ³Ό κ²½κΈ° 연도가 ν•¨κ»˜ λ°˜ν™˜λ©λ‹ˆλ‹€.

μ΄ν›„μ˜ μ½”λ“œλŠ” μ „μ²΄νŒ€μ„ λŒ€μƒμœΌλ‘œ 연도별 총싀점을 ꡬ해 ggplot2νŒ¨ν‚€μ§€λ₯Ό μ΄μš©ν•΄ μ‹œκ°ν™”ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.

μ‘μš©μ‚¬λ‘€

install.package("ggplot2")
library(ggplot2)
KBO.light.URL<-"https://lopes.hufs.ac.kr/KBO/KBO_light.csv"
KBO.light<-read.table(file = KBO.light.URL, header= TRUE, sep=",",stringsAsFactors = FALSE)

#연도별 총득,μ‹€μ κ΅¬ν•˜λŠ” ν•¨μˆ˜

Runs.and.score<-function(x,y){#x=data,y=teamname
  x$경기연도<-substr(x$Date,1,4)
  team.data.home<-x[x$ν™ˆνŒ€==y,]
  team.data.away<-x[x$μ›μ •νŒ€==y,]
  Runs.score.home.yearly <- aggregate(ν™ˆνŒ€μ μˆ˜~경기연도,team.data.home,sum)
  Runs.score.away.yearly <- aggregate(μ›μ •νŒ€μ μˆ˜~경기연도,team.data.away,sum)
  Runs.home <- aggregate(μ›μ •νŒ€μ μˆ˜~경기연도,team.data.home,sum)
  Runs.away <- aggregate(ν™ˆνŒ€μ μˆ˜~경기연도,team.data.away,sum)
  Total.Runs.score<-Runs.score.home.yearly$ν™ˆνŒ€μ μˆ˜+Runs.score.away.yearly$μ›μ •νŒ€μ μˆ˜
  Total.Runs<-Runs.home$μ›μ •νŒ€μ μˆ˜+Runs.away$ν™ˆνŒ€μ μˆ˜
  runs.change<-data.frame(Total.Runs.score=Total.Runs.score,Total.Runs=Total.Runs,year=Runs.score.home.yearly$경기연도,teamname=y)
  return(runs.change)
}

allteam<-unique(KBO.light$μ›μ •νŒ€)[c(1:8,11,12)]
allteam.runs<-do.call(rbind,lapply(1:10,FUN =function(i){Runs.and.score(KBO.light,allteam[i])}))

#ν•œκΈ€μ„ 보이게 ν•˜κΈ° μœ„ν•œ μ½”λ“œ
theme_set(theme_gray(base_family='NanumGothic'))

g<-ggplot(data = allteam.runs,aes(x=year,y=Total.Runs,fill= teamname,color= teamname))
g+geom_point(stat="identity")+theme(axis.text.x= element_text(angle=90, hjust=1))+facet_wrap(~teamname)

μ°Έκ³ 

ν˜Ήμ‹œ 자료λ₯Ό κ³΅κ°œν•˜λŠ”λ° λ¬Έμ œκ°€ μžˆμ„ κ²½μš°μ—λŠ” 연락을 μ£Όμ‹œλ©΄ μ¦‰μ‹œ μ‚­μ œν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ˜ν•œ μžλ£Œμ— ν‹€λ¦° 곳이 있으면 issues둜 μ˜¬λ €μ£Όμ‹œλ©΄, ν™•μΈν•œ λ‹€μŒ κ³ μΉ˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors