-
Notifications
You must be signed in to change notification settings - Fork 0
scoreboard 를 PyTables로 저장하는 아이디어 구현
Jaehwan edited this page Aug 3, 2019
·
3 revisions
기본적으로 파이테이블을 사용합니다. 다음 링크 참고
현재는 아이디어를 구현한 정도이기 때문에 코드가 촌스럽습니다.
import tables as tb
import datetime as dt
import pandas as pd
import json
team_name은 팀명을 영어약어로 만들기 위한 것입니다.
scoreboard = [{'팀': '두산', '1': 3, '2': 0, '3': 0, '4': 0, '5': 0, '6': 3, '7': 0, '8': 4, '9': 2, '10': '-', '11': '-', '12': '-', 'R': 12, 'H': 14, 'E': 1, 'B': 5},
{'팀': 'NC', '1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0, '9': 0, '10': '-', '11': '-', '12': '-', 'R': 0, 'H': 7, 'E': 1, 'B': 4}]
scoreboard
team_name = {'두산':'OB', 'NC':'NC', '기아':'HT', '롯데':'LT'}
team_name
기본적으로 현재 정규시즌은 12회까지 입니다. 그래서 자료형 또한 12회까지 만들었습니다.
그러나 대부분 경기에 9회에 끝나기 때문에 경기가 끝난 다음에는 점수가 없습니다.
그래서 -
가 들어가게 됩니다. 그러나 자료형은 int
형으로 만들기 때문에,
문자인 -
을 넣을 수 없습니다. 따라서 -
을 int
인 -1
으로 변경해야 합니다.
이를 함수로 구현했습니다.
def chang_null_to_negative_number(temp):
return(-1 if temp == '-' else temp)
- 파일 만들기
- 테이터 구조 만들기
-
tab
: 확인 -
h5.close()
: 만든 파일 닫기
h5 = tb.open_file("test.h5", 'w')
row_des = {
'date': tb.StringCol(10, pos=1),
'team': tb.StringCol(2, pos=2),
'1': tb.IntCol(pos=4),
'2': tb.IntCol(pos=5),
'3': tb.IntCol(pos=6),
'4': tb.IntCol(pos=7),
'5': tb.IntCol(pos=8),
'6': tb.IntCol(pos=9),
'7': tb.IntCol(pos=10),
'8': tb.IntCol(pos=11),
'9': tb.IntCol(pos=12),
'10': tb.IntCol(pos=13),
'11': tb.IntCol(pos=14),
'12': tb.IntCol(pos=15),
'R': tb.IntCol(pos=15),
'H': tb.IntCol(pos=15),
'E': tb.IntCol(pos=15),
'B': tb.IntCol(pos=15)
}
filters = tb.Filters(complevel=0)
tab = h5.create_table('/', 'scoreboard', row_des, title='scoreboard', filters=filters)
tab
for row in scoreboard:
tab.row['team'] = team_name[row['팀']]
tab.row['date'] = "20190511"
tab.row['1'] = chang_null_to_negative_number(row['1'])
tab.row['2'] = chang_null_to_negative_number(row['2'])
tab.row['3'] = chang_null_to_negative_number(row['3'])
tab.row['4'] = chang_null_to_negative_number(row['4'])
tab.row['5'] = chang_null_to_negative_number(row['5'])
tab.row['6'] = chang_null_to_negative_number(row['6'])
tab.row['7'] = chang_null_to_negative_number(row['7'])
tab.row['8'] = chang_null_to_negative_number(row['8'])
tab.row['9'] = chang_null_to_negative_number(row['9'])
tab.row['10'] =chang_null_to_negative_number(row['10'])
tab.row['11'] = chang_null_to_negative_number(row['11'])
tab.row['12'] = chang_null_to_negative_number(row['12'])
tab.row['R'] = chang_null_to_negative_number(row['R'])
tab.row['H'] = chang_null_to_negative_number(row['H'])
tab.row['E'] = chang_null_to_negative_number(row['E'])
tab.row['B'] = chang_null_to_negative_number(row['B'])
tab.row.append()
tab.flush()
h5.close()
앞에서 만든 파일을 읽어봅니다.
df = pd.read_hdf('test.h5', 'scoreboard')
df