[Pandas] 학생의 과제 미제출자 찾아내기

2024. 8. 24. 13:00Python

728x90

 

[환경]

IDE :  Visucal Code 

Python version:  3.12

Pandas : 2.2.1

 

안녕하세요.

 

유틸형 툴을 소개하고자 글을 남깁니다. 

100 명이 넘어가는 학생들의 과제를 보는데, 꼭 안내는 사람들이 있습니다. 근데 100명이 넘는 사람을 기억하고 안내는 이를 비교하는 건 너무나도 어려운 일입니다.

 

 

이를 코딩으로 해결하고자 이 글을 작성합니다. 

 

python 비교툴 실행 결과 그림 1

가장 먼저 python 비교툴 실행 결과 그림 1을 살펴보시면, 탁소희 사상공탁 두 학생의 이름이 출려굈음을 확인할 수 있습니다. 

 

 

 

 

왼쪽은 모든 학생의 가명, 오른쪽은 과제 제출자 목록 그림2

 

 

1. 가장 먼저 Excel 파일을 생성합니다. (물론 이외에도 다양한 접근법이 있습니다.) 

 

2. excel 파일을 왼쪽은 모든 학생의 가명, 오른쪽은 과제 제출자 목록 그림2 와 같이 작성합니다. 

 

3. Pandas를 이용하여 Sheet1의 B열에 학생의 데이터를 가져옵니다. 

 

코드는 아래와 같습니다. 

 

import pandas as pd

# Excel 파일 경로 설정
# 1. original_path = {Excel 파일의 절대경로 or 상대 경로 }
# 2. excel 파일을 불러옴 Sheet1 에 B열에 학생 데이터가 있다고 가정함 
original_path = './original_student.xlsx'  
target_path = './target_student.xlsx' 

original_path_data_frame = pd.read_excel(original_path,usecols= 'B')
target_path_data_frame = pd.read_excel(target_path,usecols= 'B')

# print(bssql_sql_login_data_frame)

# 3. 데이터 전처리 - 공백문자열 제거 
original_path_data_frame['성명'] = original_path_data_frame['성명'].astype(str).str.strip()
target_path_data_frame['성명'] = target_path_data_frame['성명'].astype(str).str.strip()

# 3-1. DataFrame 내용 출력. 데이터를 올바르게 불러왔는지 눈으로 확인한다. 
# print(original_path_data_frame )
# print(bssql_login_path_data_frame )

# 4. 전체 학생 명단에서 과제 제출자 명단을 뺀 차집합 구하기
non_submitters = original_path_data_frame[~original_path_data_frame['성명'].isin(target_path_data_frame['성명'])]

# 5. 미제출자 명단 출력
print("미제출자:")
print(non_submitters)

 

4. 데이터를 전처리 합니다. 

Why? 실수로 오타나 공백이 들어가면, 잘못된 결과가 나옵니다. 

How? 문자열의 strip() 함수를 이용하면 공백을 제거합니다. (이 외에도 다른 문자열들을 제거할 방법은 있습니다.) 

What? 받아온 데이터들에 데이터의 결측치가 반드시 있기에 이런 전처리를 합니다. 

 

5. 전체 학생 명단에서 과제 제출차의 명단을 뺀 차집합을 구합니다. 

 

6. 결과를 출력합니다. 

 

 

[도움]

 

1. 응원 댓글은 글 쓰는데 힘이 됩니다.

2. 공감도 글 쓰는데 힘이 됩니다. 

3. 광고 한번 클릭 해주시면 힘은 두 배가 됩니다. 

4. 혹시라도 부족한 부분이 있다면 덧글로 남겨주세요. 남기시면, 더 나은 글을 쓸 재료가 됩니다.

 

[reference]

 

가명 생성기 

https://maternalgrandfather.tistory.com/entry/%EB%9E%9C%EB%8D%A4-%ED%95%9C%EA%B8%80-%EC%9D%B4%EB%A6%84-%EC%83%9D%EC%84%B1%EA%B8%B0-%EC%B6%94%EC%B2%9C

 

랜덤 이름 생성기 (예쁜 한글 이름, 순우리말 이름, 외자 이름)

랜덤으로 한글 이름을 생성해 줍니다. 순우리말 이름과 외자 이름도 짓도록 만들었어요. 랜덤이지만 꽤 자연스러운 이름을 추천해 주고, 예쁜 한글 이름도 제법 많이 지어주니까, 잘 활용해 주

maternalgrandfather.tistory.com

 

 

 

 

 

 

 

 

728x90

'Python' 카테고리의 다른 글

[유틸] 파일 중복체크 하여 신규 파일 명 만들기  (0) 2024.08.25
[Streamlit] 1. Hello Streamlit  (0) 2024.04.06