강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Jeehoon Kim님의 프로필 이미지
Jeehoon Kim

작성한 질문수

iloc vs loc [작업형 1 모의문제 1번]

작성

·

3

0

문제

  • f1컬럼의 결측치는 중앙 값으로 대체하고

  • 나머지 결측치가 있는 데이터(행)을 모두 제거하고,

  • 앞에서부터 70% 데이터 중 views 컬럼의 3사분위 수에서 1사분위 수를 뺀 값을 구하시오

  • (단, 데이터 70% 지점은 정수형(int) 변환)

내 해답

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p1/members.csv")
df

df['f1'] = df['f1'].fillna(df['f1'].median()) #결측치 중앙값으로 대체
df = df.dropna() #나머지 결측치가 있는 데이터(행)을 모두 제거
df = df.loc[:int(len(df) * 0.7)] #앞에서부터 70% 데이터. loc로 함 (인덱스 명 0부터 시작하는거 df로 확인)
ans1 = df['views'].quantile(.75) - df['views'].quantile(.25) #views 컬럼의 3사분위 수에서 1사분위 수를 뺀 값
print(ans1)

결과 : 3662

해답

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p1/members.csv")
# df = pd.read_csv("members.csv")

df['f1'] = df['f1'].fillna(df['f1'].median())
# print(df.isnull().sum())

# print(df.shape)
df = df.dropna()
# print(df.shape)

df = df[:int(len(df) * 0.7)]

r1 = df['views'].quantile(.75)
r2 = df['views'].quantile(.25)

print(r1 - r2)

내 코드에서 문제가 된 부분

df = df.loc[:int(len(df) * 0.7)] 

loc 대신 iloc 를 쓰면 정답과 같은 답이 나오는걸 확인했는데

문제는 해설처럼 %70 번째를 포함하려면 loc 를 쓰는게 맞는거 아닌가 해서요

iloc 는 iloc[:n] 을 하면 n-1번 인덱스 까지만 포함하는거니까요

 

 

 

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
Jeehoon Kim님의 프로필 이미지
Jeehoon Kim

작성한 질문수

질문하기