4-1 작업형 예시 질문 있습니다
문제2
주어진 데이터에서 결측치가 30%이상 되는 컬럼을 찾고 해당 컬럼에 결측치가 있는 데이터(행)를 삭제 함.
그리고 30% 미만, 20% 이상인 결측치가 있는 컬럼은 최빈값으로 값을 대체하고
'f3'컬럼의 'gold' 값을 가진 데이터 수를 출력하세요!
문제가 지금 이런 형식인데요.
제가 궁금한 것은, 결측치의 크기를 판단하는 판단하는 위치입니다.
'f1' 칼럼을 dropna 하게되면 다른 행들도 영향을 받아서 결측치가 들어있는 행도 같이 날라가게 되는데
각 칼럼별 결측치의 크기를 판단하는 위치는 모든 작업을 수행하기 전에 하는 것이 맞을까요?
<제가 푼 코드>
# your code
import pandas as pd
import numpy as np
pd.set_option('display.max_columns', None)
# file load
file_path = "/content/drive/MyDrive/Colab Notebooks/빅데이터 분석기사/1. 작업형1/"
df = pd.read_csv(file_path+"members.csv")
check = []
# find na over 30%
for col in list(df.columns):
check.append(df[col].isnull().sum()/len(df))
for col, check in zip(list(df.columns), check):
if check >= 0.3:
df = df.dropna(subset=col)
elif check < 0.3 and check >= 0.2:
df[col] = df[col].fillna(df[col].mode()[0])
print(len(df[df['f3'] == 'gold']))
<강의에서 알려준 코드>
# 풀이
import pandas as pd
df = pd.read_csv("members.csv")
# print(df.isnull().sum())
# print(len(df) * 0.3)
# f1 삭제
# f3 최빈값
# print(df.shape)
df = df.dropna(subset=['f1'])
# print(df.shape)
# print(df.head())
df['f3'] = df['f3'].fillna(df['f3'].mode()[0])
# print(df.head())
# df.isnull().sum()
print(sum(df['f3'] == 'gold'))
답변 1
0
문제에서 의도한 바는
결측치가 30%이상 과 30~20%를 구분하고자 했어요!
데이터를 가공하기 전의 결측치 비율이 맞습니다.
여러 작업을 한 문제에 담아서 표현하려다보니 말씀하신대로도 생각할 수 있겠네요!
의견 감사합니다. 문장을 다듬어 보도록 하겠습니다.
수강 연장 문의드립니다.
0
21
2
강의 연장 문의
0
29
2
수강 신청 연장 문의드립니다.
0
42
2
작업형 1번문제... 환경관련
0
30
2
12회 기출은 언제 업데이트 될까요??
0
39
2
8/6 작성한 연장문의 질문글에 대한 재요청
0
38
2
수강기간 연장 문의
0
40
2
수강기간 연장문의
0
37
2
수강기간 연장 요청 문의드립니다
0
38
2
수강 기간 연장 문의
0
47
2
수강연장 가능 문의 (기간 약 한달반)
0
60
2
수강기간 연장 가능할까요 선생님
0
74
2
Section15. 수업에 사용하는 데이터 주소가 다 보이지 않아서 실습을 위한 데이터를 다운 받지 못하고 있습니다.
0
56
3
수강연장요청 문의
0
90
2
아무래도 다음 시험 연장은 어렵겠죠?
0
109
2
빅분기 12회 결과 관련 문의
0
113
1
책이랑 강의랑 순서나 예제가 다른것 같네요
0
82
2
수강연장 문의
0
106
2
재검토 요청 방법 좀 알려주셔요...-.-;;
0
106
2
12회 실기 질문(작업형 2)
0
92
2
뒤로가기 버튼 같은 것이 있나요?
0
66
1
강의 연장 문의
0
99
2
출력값 질문
0
74
2
수업노트가 어디에 있나요?
0
63
1





