#1-5 경마 데이터 수집하기 - 경주 결과를 표 형태로 저장하기

목차

    2017. 8. 26. 10:43


    그럼, 이제 경기 결과를 표형태로 저장해 보겠습니다.


    표형태로 저장하기에 앞서서, pandas라는 패키지를 알아두어야 합니다. 


    pandas는 데이터 처리 및 분석을 용이하게 해 주는 패키지로, 


    이 패키지를 이용하여 dataframe이라는 형태로 저장하면 우리가 흔히 알고 있는 DB형태로 저장해 줍니다.



    (DB 형태 예시)



    위의 그림에서처럼 위에는 칼럼 정보를 그 밑으로 쭈~욱 데이터가 저장되어 있는 것을 알고 있습니다.


    저희는 이러한 형태인 DataFrame형태로 저장할 것입니다.




    바로 앞 글에서처럼 긁어오는 영역을 확인한 후에, 아래와 같이 긁어 옵니다.


    url="http://race.kra.co.kr/raceScore/ScoretableDetailList.do?meet=1&realRcDate=20170723&realRcNo=1"

    result = urlopen(url)
    html = result.read()
    soup = BeautifulSoup(html, 'html.parser')
    temp = soup.find_all('div',attrs={'class':'tableType2'})
    table = temp[0].find('table')


    여기까지는 앞의 글과 똑같고요. 이제 table에 있는 값을 dataframe형태로 저장하면 됩니다.



    p=parser.make2d(table)
    df=pd.DataFrame(p[1:],columns=p[0])
    d0=df.rename(columns = {'마번':'번호'})


    parser.make2d함수를 이용하면, table값이 한 줄씩 저장됩니다. 여러 줄의 list형태로 저장되는데요.


    그 다음 코드가 dataframe형태로 저장하는 부분입니다. 이것을 실행하기 전에 먼저 import pandas as pd 라고 실행하셔서


    pandas 패키지를 import 해야 합니다.


    그 다음에는 p[1:] 이라고 지정하여 두 번째 줄부터 데이터로 저장하고 p[0]은 칼럼 값으로 지정하는 부분입니다.


    그 다음 rename을 통해 일부 칼럼값을 수정해 줍니다. 



    최종적으로 저장된 형태는 아래와 같습니다.


    In[10]: d0

    Out[18]: 

        순위  번호      마명 산지 성별  연령    중량 레이팅      기수명 조교사명   마주명 마주복색 도착차       마체중  \

    0    1   3   이글스카이  한  수  2세  54.5          임기원  박윤규   이방훈           481(-10)   

    1    2   8  달려라파챠이  한  거  4세    55      (-1)하정훈  박희철   한영석        목   428(-1)   

    2    3   7      천녹  한  암  3세    54           신지  최봉주   조금제        ½  450(-17)   

    3    4  12   큐피드닥터  한  암  3세    54          신형철  유재길   서순배    ♠   ¾   470(10)   

    4    5   2   소중한성불  한  암  2세  52.5          조재로  배휴준   최동천    ♠   ¾    450(0)   

    5    6  10    운해질주  한  수  3세    56            얀  정호익   박정재    ♠   4    482(0)   

    6    7   5   무적의순간  한  수  2세  53.5      (-1)김태훈  지용철  금악목장    ♠  2½   484(12)   

    .............




    줄이 좀 안 맞기는 하지만, DB 형태로 잘 저장되어 있는 것을 알 수 있습니다.


    이렇게 하나의 경기를 가져오는 방법을 알아 보았습니다. 


    다음에는 이제 몇 년치의 데이터를 긁어와서 분석을 하기 위한 데이터셋을 만들어 보도록 하겠습니다. url의 입력 파라미터를 조정하여, 다수의 경기결과를 크롤링하여 DB로 만들고자 한다. 자세한 내용이 궁금하다면, 아래 포스팅을 참조해보세요.

    ( 참조: #1-6 경마 데이터 수집하기 - SQLite라는 DB로 저장하기 )


    감사합니다.