728x90
반응형
import pandas as pd
data = {
'출석번호': [1, 2, 3],
'이름': ['조인성', '송혜교', '원빈'],
'국어': [56, 78, 56],
'수학': [55, 95, 64],
'과학': [46, 54, 96],
'사회': [78, 35, 69]
}
num_students = len(df) # 학생수
sums = [] # 종점(합계) 변수
averages = [] # 평균 변수
ranks = [] # 등수 변수
# 학생별 과목들의 합계,평균 구하기
for i in range(num_students):
total = df.iloc[i, 2:6].sum() # 과목들의 합계
sums.append(total)
average = total / 4 # 평균 계산
averages.append(average)
# DataFrame에 총점, 평균 값 추가
df['총점'] = sums
df['평균'] = averages
# 등수 계산
sorted_averages = sorted(averages, reverse=True) # 평균으로 내림차순 정렬
for avg in averages: # 내림차순의 평균값 하나씩 꺼냄
rank = sorted_averages.index(avg) + 1 # 내림차순한 순서의 인덱스값+1 로 등수 정함
ranks.append(rank)
df['등수'] = ranks
pandas의 메서드를 사용해서 하는 경우
data = {
'출석번호': [1, 2, 3],
'이름': ['조인성', '송혜교', '원빈'],
'국어': [56, 78, 56],
'수학': [55, 95, 64],
'과학': [46, 54, 96],
'사회': [78, 35, 69]
}
df = pd.DataFrame(data)
# Calculate the total and average for the subjects
df['총점'] = df[['국어', '수학', '과학', '사회']].sum(axis=1)
df['평균'] = df[['국어', '수학', '과학', '사회']].mean(axis=1)
# Calculate the rank based on the total score
df['등수'] = df['총점'].rank(ascending=False, method='min').astype(int)
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 문제 : 라면명으로 라면 레시피 찾기 (0) | 2023.11.20 |
---|---|
[파이썬] 문제 : 문자열에서 분수와 단어 분리 (0) | 2023.11.18 |
[파이썬] 문제 : 점수로 학점으로 변환해 출력 (0) | 2023.11.17 |
[파이썬] 문제 : 카페 메뉴 입력 받기 (0) | 2023.11.16 |
[파이썬] 문제 : 사칙연산 랜덤 계산 (0) | 2023.11.08 |
댓글