본문 바로가기

자격증공부/빅데이터분석기사

[빅데이터분석기사] 작업형1 문제유형 (결측치)

320x100

빅데이터분석기사

* 인프런의 '퇴근후딴짓'님의 강의를 참고하였습니다. *

 

[문제1]  f1컬럼의 결측치는 중앙값으로 대체하고, 나머지 결측치가 있는 데이터(행)을 모두 제거하고, 앞에서부터 70%데이터 중 views 컬럼의 3사분위 수에서 1사분위 수를 뺀 값을 구하시오.(단, 데이터70%지점은 정수형 변환)

# 라이브러리 및 데이터 읽어오기
import pandas as pd
df = pd.read_csv('members.csv')
# print(df.head())

# f1 컬럼 결측치 확인 및 중앙값 찾아서 대체
# print(df.isnull().sum())
# print(df.shape)
m = df['f1'].median()
# print(m)
df['f1'] = df['f1'].fillna(m)
# print(df.isnull().sum())
# print(df.shape)

# 결측치 확인 및 결측치 데이터(행) 제거
df = df.dropna()
# print(df.isnull().sum())
# print(df.shape)

# 70% 데이터 중 views 컬럼의 3사분위 - 1사분위 뺀 값 구하기
a = int(len(df)*0.7)
# print(a)
df = df.iloc[:a]
# print(df)

Q3 = df['views'].quantile(.75)
Q1 = df['views'].quantile(.25)

print(abs(Q3-Q1))
320x100

[문제2] 주어진 데이터에서 결측치가 30%이상 되는 컬럼을 찾고 해당 컬럼에 결측치가 있는 데이터(행)을 삭제함. 그리고 30%미만, 20%이상인 결측치가 있는 컬럼은 최빈값으로 값을 대체하고, f3컬럼의 gold 값을 가진 데이터의 수를 출력하세요.

# 라이브러리 및 데이터 읽기
import pandas as pd
df = pd.read_csv('members.csv')
# print(df.head())

# 결측치가 30% 이상 되는 컬럼 찾기
# print(df.isnull().sum())
# print(df.shape)
len(df)*0.3

# f1 컬럼에 결측치가 있는 데이터(행) 삭제
# print(df.shape)
df= df.dropna(subset=['f1'])
# print(df.shape)

# f3 컬럼 30%미만, 20% 이상인 결측치가 있는 컬럼은 최빈값으로 대체
# df['f3'].mode()[0]
# print(df.head())
df['f3'] = df['f3'].fillna(df['f3'].mode()[0])
# print(df.head())
# print(df.isnull().sum())

# 'f3'컬럼의 'gold' 값을 가진 데이터 수를 출력하세요.
cond1 = df['f3'] == 'gold'
print(len(df[cond1]))
반응형

[문제3] views 컬럼에 결측치가 있는 데이터(행)을 삭제하고, f3컬럼의 결측치는 0, silver는 1, gold는 2, vip는 3으로 변환한 후 f3 컬럼의 총 합을 정수형으로 출력하시오.

import pandas as pd
df = pd.read_csv('members.csv')
# print(df.head())

# views 컬럼에 결측치가 있는 데이터(행) 삭제
# print(df.isnull().sum())
# print(df.shape)

df = df.dropna(subset=['views'])
# print(df.isnull().sum())
# print(df.shape)

 

ㅇ 방법1 : replace 활용

import numpy as np

# print(df.head(7))
df['f3'] = df['f3'].replace(np.nan,0).replace('silver',1).replace('gold',2).replace('vip',3)

# df['f3'] = df['f3'].replace('silver',1)
# df['f3'] = df['f3'].replace('gold',2)
# df['f3'] = df['f3'].replace('vip',3)
# print(df.head(7))

print(df['f3'].sum())

 

ㅇ 방법2 : map 활용

#map
dict_list = {np.nan:0, 'silver':1, 'gold':2, 'vip':3}
df['f3'] = df['f3'].map(dict_list)

print(df['f3'].sum())

 

ㅇ 방법3 : 조건 활용

r1 = sum(df['f3'] == 'silver') * 1
r2 = sum(df['f3'] == 'gold') * 2
r3 = sum(df['f3'] == 'vip') * 3
print(r1 + r2 + r3)

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형1] 판다스 문법 활용 요약

 

[빅데이터분석기사][작업형1] 판다스 문법 활용 요약

1. 라이브러리 및 데이터 읽어오기 ㅇ 컬럼명 확인할 수 있도록 세팅하기 import pandas as pd df = pd.read_csv('ㅇㅇㅇㅇ.csv') pd.set_option('display.max_columns', None) #컬럼명 전부 확인할 수 있도록 셋팅하기 2.

inform.workhyo.com

 

320x100
반응형