본문 바로가기
IT&게임/빅데이터분석기사(빅분기)

빅데이터 분석기사 - 1유형 예제문제 학습하기(결측치2)

by 푸루루 2024. 6. 3.
728x90
반응형

문제4

  • 주어진 데이터에서 자료형(type)이 object인 컬럼은 삭제하고, 결측치는 0으로 대체한다.
  • 행 단위로 합한 다음 그 값이 3000보다 큰 값의 데이터 수를 구하시오 ('age', 'f1', 'f2', 'f5', 'views'의 각 행별 합)

👍object 타입의 데이터만 추출하는 방법 + 컬럼명을 갖고옴 ➡️ df.select_dtypes(include='object').columns  

👍데이터의 열과 행을 바꾸는 방법 ➡️ df= df.T

# your code
import pandas as pd 
import numpy as np

df=pd.read_csv("members.csv")

#해설 --------------
#object 타입을 선택하는 방법 > columns를 안적으면 모든 데이터를 갖고옴 

cols = df.select_dtypes(include='object').columns
cols
df = df.drop(cols, axis=1)
df.head()

df=df.fillna(0)
df=df.T
sum(df.sum()>3000)

 

문제5

  • 데이터에서 IQR을 활용해 views 컬럼의 이상치를 찾고, 이상치 데이터의 수를 구하시오

👍이상치를 구하는 방법 

➡️ IQR을 먼저 구한다 (df['ex'].quantile(.75)-df['ex'].quantile(.25))

➡️ 각각 분위 별로 계산을 해준다. 

   line1 = 1분위 - 1.5*IQR

   line2 = 3분위 + 1.5*IQR

 

# 풀이
import pandas as pd
df = pd.read_csv("members.csv")

q3 = df['views'].quantile(.75)
q1 = df['views'].quantile(.25)

IQR = q3 - q1
# print(IQR)

line1 = q1 - 1.5 * IQR
line2 = q3 + 1.5 * IQR


print(sum(df['views'] < line1) + sum(df['views'] > line2))​

 

 

 

문제6

  • 'age' 컬럼의 이상치(소수점 나이와 음수나이, 0포함)를 제거하고
  • 제거 전 후의 views 컬럼 표준편차를 더하시오 (최종 결과 값은 소수 둘째자리까지 출력, 셋째자리에서 반올림)

👍표준편차 구하기 ➡️ df['something'].std()  

👍조건을 제외하고 데이터를 구할때 ➡️ df = df[~cond]

👍반올림 적용하기 ➡️round(data,2)

# 풀이
import pandas as pd
df = pd.read_csv("members.csv")

r1 = df['views'].std()

cond = df['age'] <= 0
# print(df.shape)
df = df[~cond]
# print(df.shape)

# print(df.shape)
cond = df['age'] == round(df['age'],0)
df = df[cond]
# print(df.shape)

r2 = df['views'].std()

print(round(r1 + r2, 2))
 

 

728x90

댓글