티스토리 뷰
동아리에서 출결관리를 하기 위해 EXCEL을 사용, EXCEL을 csv로 다른이름으로 저장하면 csv파일을 통해 python과 함께 데이터를 활용해 3번 초과로 체크된 사람의 이름을 자동으로 알려주는 시스템을 만들면 좋을 것 같다는 생각을 하였고 직접 만들어보았다. 지각 2번을 결석 1번으로 취급

1. csv파일 사용을 위한 코드 작성
#출석 관리 시스템
# Importing library
import os
# Getting all the arff files from the current directory
files = [arff for arff in os.listdir('.') if arff.endswith(".arff")]
# Function for converting arff list to csv list
def toCsv(text):
data = False
header = ""
new_content = []
for line in text:
if not data:
if "@ATTRIBUTE" in line or "@attribute" in line:
attributes = line.split()
if("@attribute" in line):
attri_case = "@attribute"
else:
attri_case = "@ATTRIBUTE"
column_name = attributes[attributes.index(attri_case) + 1]
header = header + column_name + ","
elif "@DATA" in line or "@data" in line:
data = True
header = header[:-1]
header += '\n'
new_content.append(header)
else:
new_content.append(line)
return new_content
# Main loop for reading and writing files
for file in files:
with open(file, "r") as inFile:
content = inFile.readlines()
name, ext = os.path.splitext(inFile.name)
new = toCsv(content)
with open(name + ".csv", "w") as outFile:
outFile.writelines(new)
2. 데이터중 가장 위의 두줄을 next를 통해 버리고 나머지를 한줄씩 불러옴
import csv
f=open('check_f.csv','r',encoding='cp949')
#encoding방법이 맥은 utf-8 방식을 쓰고 윈도우는 cp949 방식을 사용.
rdr = csv.reader(f)
f_list =[]
next(rdr)
next(rdr)
for line in rdr:
f_list.append(line)
f.close()
print(f_list)
3. 활동인원, 활동횟수 출력해보기
num = len(f_list)
col = len(f_list[0])
print('동아리 인원 : {}명, 동아리 진행 횟수 {}번'.format(num,col-1))

4. 이름 list와 각 사람의 결석횟수를 저장할 sum list를 생성
#활동자들 이름 name 리스트에 저장
name = []
for i in range(num):
name.append(f_list[i][0])
print(name)
#출석관리 리스트 cnt
cnt=[]
for i in f_list:
cnt.append(i[1:])
print(cnt)
#3을 넘을 경우에 oot -> 저장을 sum에
sum = [0]*num
for i in range(len(cnt)):
for j in cnt[i]:
for t in j:
if t=='X':
sum[i]+=1
elif t=='W':
sum[i]+=0.5
else:
continue
print(sum)
5. 결석도 지각도 하지 않은 사람들을 제외한 사람들의 이름을 넣을 name_list와 결석 횟수를 저장할 count_list 생성
name_list=[]
count_list=[]
for i in range(0,num):
if sum[i]!=0:
name_list.append(f_list[i][0])
count_list.append(sum[i])
print(name_list)
print(count_list)
6. name_list와 count_list를 x와 y축의 변수로 하여 그래프를 출력해 시각화
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'NanumGothic'
plt.bar(name_list,count_list,color = "green",width=0.5)
plt.show()
4/1일 OT를 제외한 첫 활동 -> 출결 데이터가 1개 밖에 없기에 3을 넘는 사람은 없었지만, 이후에 누가 넘었는지 시각적으로 한눈에 파악하기 쉽게 만들어봄.
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'NanumGothic'
plt.bar(name_list,count_list,color = "green",width=0.5)
plt.show()
*TIP) 그래프에 name_list마다 출력을 해주려면 name_list값이 한글이여서 나눔고딕 폰드를 다운로드해주고 plt.reParams['font.familiy'] = 'NanumGothic'을 입력해줘야함. 안 그러면 한글값 출력이 되지 않아 각 막대그래프가 누구의 값인지 파악할 수 없게됨.

7. 한계값 3을 넘으면 이름이 출력됨
out = []
for i in range(0,len(count_list)):
if count_list[i]>3:
out.append(name_list[i])
print(name_list[i])
#3번 넘은사람의 이름이 출력되는 코드
=> csv파일을 저장하고 코드를 돌리면 바로 3번 넘은 사람의 이름이 출력되어 눈으로 파일을 보며, 손으로 세어가며 하는 과정을 없앨 수 있게 된다.
아직, OT를 제외한 활동 횟수가 한번이여서 3번을 넘은 사람은 없었음.
CSV파일을 활용하는 머신러닝 관련 실습을 하고나서 동아리 출결을 EXCEL로 정리하는데 CSV파일과 python을 이용한다면 데이터 처리를 통해 불편한 과정없이 관리를 할 수 있다고 생각하였고, 동아리 활동 이후 다음날 새벽에 만들어보았다!
'기획' 카테고리의 다른 글
게시판만들기(4) - flask를 활용한 기능구현 (0) | 2021.06.13 |
---|---|
게시판만들기(3) - class diagram (0) | 2021.05.31 |
게시판 만들기(2) - UI (0) | 2021.05.27 |
게시판 만들기 (1) - user story, case (0) | 2021.05.27 |
byeBlue-(1) 기획 (0) | 2021.03.28 |
- Total
- Today
- Yesterday
- 백트래킹(1)
- 효율적인방법찾기
- CSMA/CD란?
- 파이썬 알아두면 유용
- 모듈 사용법
- 딥러닝입문
- 기사작성 대외활동
- 시뮬레이션 c
- 백준 15650 파이썬
- 13886
- CREATE ASSERTION
- 백준 4963
- mm1queue
- 10866 백준
- 코딩월드뉴스
- 기본 텍스트 분류
- 소프트웨어공학설계
- 영화 리뷰 긍정 부정 분류
- 백준 숫자놀이
- stack 컨테이너
- 11053 백준
- 백준 11053 파이썬
- 백준 10866
- 핀테크 트렌드
- 온라인프로필 만들기
- 4963 섬의개수
- DRF 회원관리
- 스택 파이썬
- c++덱
- LAMBDA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |