빅데이터분석기사/작업형1

[작업형1] 조건 / 평균 / bmi / 절대값 / 내림차순 구하기

seo0seok 2023. 6. 24. 01:25

// 퇴근후딴짓 님의 강의를 참고하였습니다. //

 

Dataset :

5-1price.csv
0.14MB
5-2bmi.csv
0.16MB
5-3student.csv
1.44MB

 

문제1) 종량제 봉투 종류가 '규격봉투'이고, 종량제 봉투 용도가 '음식물쓰레기'인 2L가격 평균을 출력하시오.

           (단, 가격0 제외, 반올림 후 정수 출력)

import pandas as pd
df = pd.read_csv("5-1price.csv")
df

 

cond1 = df['2ℓ가격'] != 0
cond2 = df['종량제봉투종류'] == "규격봉투"
cond3 = df['종량제봉투용도'] == "음식물쓰레기"
df = df[cond1 & cond2 & cond3]

print(round(df['2ℓ가격'].mean()))

실행 결과 : 
118

→ '2L가격'이 '0원'이 아닌 조건1 / '종량제봉투종류'가 '규격봉투'인 조건2 / '종량제봉투용도'가 '음식물쓰레기인 조건3

    세 가지 조건을 만든다.

→ 세 가지 조건을 모두 만족하는 '2L가격' 컬럼의 평균을 mean() 함수로 구하고 round() 함수로 반올림하여 출력한다.

 

 

 

문제2) bmi를 계산하고, 수치가 정상인 사람 수와 위험체중인 사람 수의 차이를 절대값으로 구하시오. (정수로 출력)

 

    - bmi(체질량지수): 몸무게(kg) / 키(m)의 제곱 단위 -

  • Height: cm
  • Weight: kg
  • 저체중: BMI 18.5미만
  • 정상체중: BMI 18.5이상 ~ 23미만
  • 과체중 또는 위험체중: BMI 23 이상 ~ 25미만
  • 비만체중: 25이상
import pandas as pd
df = pd.read_csv("5-2bmi.csv")
df

 

df['bmi'] = df['Weight'] / (df['Height']/100)**2
cond1 = (df['bmi'] >= 18.5) & (df['bmi'] < 23)
cond2 = (df['bmi'] >= 23) & (df['bmi'] < 25)
print(abs(len(df[cond1]) - len(df[cond2])))

실행 결과 :
144

→ Weight와 Height를 이용해 bmi를 구한다. (키는 cm로 되어있어 100으로 나눠 m로 만들어 줘야한다.)

→ bmi가 정상인 조건1 / bmi가 과체중인 조건2를 만든다.

→ 정상인 사람 수와 과체중인 사람의 수를 len() 함수를 사용해 구하고 뺀 후 abs() 함수를 사용해 절대값을 씌워 출력한다.

 

 

문제3) 순전입학생(순전입 학생 = 전입 학생 - 전출 학생)이 가장 많은 학교의 전체학생수를 정수로 출력하시오.

import pandas as pd
df = pd.read_csv("5-3student.csv")
df

 

df['순전입'] = df['전입학생수(계)'] - df['전출학생수(계)']
df = df.sort_values('순전입', ascending=False)
print(int(df.iloc[0,-2]))

실행 결과 :
230

→ '전입학생수'와 '전출학생수'를 이용해 '순전입'을 구한다.

→ '순전입' 컬럼을 sort_values(ascending=False) 함수를 사용해 내림차순으로 정렬한다.

→ iloc() 함수를 통해 첫 번째 행의 '전체학생수' 컬럼을 선택한 후 int를 씌워 출력하면 230명이 나온다.