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

soyoung an님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

4회 기출유형(작업형1)

캐글 [py] T1-1. 문제에서 답이 다르게 나옵니다

해결된 질문

24.05.30 09:17 작성

·

102

0

  • 코랩에서 [py] T1-1. 이상치를 찾아라(IQR활용) Expected Questions 문제입니다

  • 아래 풀이로 진행했을 때 정답이 다르게 나오는데 혹시 어느 부분에서 차이가 발생한건지 알 수 있을까요??

     

 



import pandas as pd
df = pd.read_csv("train.csv")
# df.info()
# df.head()
# df.isnull().sum()

#  IQR을 활용해 Fare컬럼의 이상치를 찾고, 
# outlier1 = 1q - 1.5 * iqr
# outlier2 = 3q + 1.5 * iqr
# iqr = 3q - 1q

q1 = df["Fare"].quantile(.25)
q3 = df["Fare"].quantile(.25)
iqr = q3 - q1

# outlier1 = df["Fare"] < (q1 - 1.5 * iqr)
# outlier2 = df["Fare"] > (q3 + 1.5 * iqr)
q1 - 1.5 * iqr, q3 + 1.5 * iqr

outlier1 = df[df["Fare"] < (q1 - 1.5 * iqr)]
outlier2 = df[df["Fare"] > (q3 + 1.5 * iqr)]

# # 이상치 데이터의 여성 수를 구하시오
len(outlier1["Sex"] == "female") + len(outlier2["Sex"] == "female")

답변 2

0

soyoung an님의 프로필 이미지
soyoung an
질문자

2024. 05. 30. 10:34

오타가 있었군요 ㅠㅠ

해당 부분 수정했는데 여전히 답이 다르게 나옵니다!ㅠㅠ

# your code

import pandas as pd
df = pd.read_csv("train.csv")
# df.info()
# df.head()
# df.isnull().sum()

#  IQR을 활용해 Fare컬럼의 이상치를 찾고,
# outlier1 = 1q - 1.5 * iqr
# outlier2 = 3q + 1.5 * iqr
# iqr = 3q - 1q

q1 = df["Fare"].quantile(.25)
q3 = df["Fare"].quantile(.75)
iqr = q3 - q1

outlier1 = df[df["Fare"] < (q1 - 1.5 * iqr)]
outlier2 = df[df["Fare"] > (q3 + 1.5 * iqr)]
# q1 - 1.5 * iqr, q3 + 1.5 * iqr

# # 이상치 데이터의 여성 수를 구하시오
len(outlier1["Sex"] == "female") + len(outlier2["Sex"] == "female")

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 05. 30. 10:27

q1 = df["Fare"].quantile(.25)

q3 = df["Fare"].quantile(.25)
가 동일한 값으로 들어갔네요! 수정이 필요해요!

soyoung an님의 프로필 이미지
soyoung an
질문자

2024. 05. 30. 21:27

오타가 있었군요 ㅠㅠ

해당 부분 수정했는데 여전히 답이 다르게 나옵니다!ㅠㅠ

# your code

import pandas as pd
df = pd.read_csv("train.csv")
# df.info()
# df.head()
# df.isnull().sum()

#  IQR을 활용해 Fare컬럼의 이상치를 찾고,
# outlier1 = 1q - 1.5 * iqr
# outlier2 = 3q + 1.5 * iqr
# iqr = 3q - 1q

q1 = df["Fare"].quantile(.25)
q3 = df["Fare"].quantile(.75)
iqr = q3 - q1

outlier1 = df[df["Fare"] < (q1 - 1.5 * iqr)]
outlier2 = df[df["Fare"] > (q3 + 1.5 * iqr)]
# q1 - 1.5 * iqr, q3 + 1.5 * iqr

# # 이상치 데이터의 여성 수를 구하시오
len(outlier1["Sex"] == "female") + len(outlier2["Sex"] == "female")

 

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 05. 31. 12:45

len(outlier1["Sex"] == "female") + len(outlier2["Sex"] == "female")
에서 len()대신 sum()을 사용해야 합니다.
len() : True도 1개, False도 1개로 모든 데이터 수를 카운트 합니다.

sum(): True는 1, False는 0으로 True의 수만 계산됩니다.