작성
·
22
0
df.head()
mean = df['age'].mean()
std = df['age'].std()
lower = mean - (std*1.5)
upper = mean + (std*1.5)
cond1 = df['age'] < lower
cond2 = df['age'] > upper
print(df[cond1|cond2]['age'].sum())
# cond1 = (df['age'].mean() - (df['age'].std())*1.5) > df['age']
# cond2 = (df['age'].mean() + (df['age'].std())*1.5) < df['age']
# print(df[cond1|cond2]['age'].sum())
어떤 부분에서 틀린걸까요..?
답변 3
0
0
다른 방법으로 도전은 정말 응원합니다:)
에러가 아닌
수험생의 방법을 하나 하나 확인해 드릴 수 없다는 점 양해 부탁드려요!
정답이 출력 구해지지 않는다면 제가 권장드린 방법으로 연습부탁드립니다. 감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. shs4166님.
질문하신 내용은 데이터프레임에서 특정 조건에 맞는 age
컬럼의 값을 합산하는데 어려움을 겪고 계신 것 같습니다. 제공하신 코드를 보면, 이상치를 찾기 위한 조건(cond1, cond2)을 정의하고, 이에 맞는 행의 age
값을 합산하려고 하고 있습니다. 아래에서 주의해야 할 점을 설명드리겠습니다.
논리 연산자 사용: cond1 | cond2
와 같은 논리 연산자를 사용할 때에는 괄호로 각 조건을 감싸주어야 합니다. 즉, (cond1) | (cond2)
로 코드를 수정해야 합니다. 그래야 파이썬 내부에서 우선순위 없이 각 조건의 연산이 제대로 수행됩니다.
잘못된 조건 설정: 주석 처리된 부분의 조건이 맞지 않는 것 같습니다. cond1
과 cond2
는 모두 df['age'] < lower
또는 df['age'] > upper
와 같이 설정하는 것이 적절합니다.
아래는 이 문제점을 반영한 수정 코드입니다:
mean = df['age'].mean()
std = df['age'].std()
lower = mean - (std * 1.5)
upper = mean + (std * 1.5)
cond1 = df['age'] < lower
cond2 = df['age'] > upper
# 조건을 각각 괄호로 감싸줍니다.
print(df[(cond1) | (cond2)]['age'].sum())
위의 코드를 사용하면, age
가 lower
또는 upper
를 벗어난 이상치에 대한 합이 계산됩니다.
이와 관련된 유사 질문과 답변은 아래 링크에서 확인하실 수 있습니다:
- 2회 기출유형(작업형1) 에서 문제3 - 이 게시물에서 조건 설정과 논리 연산자로 인한 합산 문제에 대해 상세히 다루고 있습니다.
이 설명이 shs4166님의 문제가 해결되는데 도움이 되기를 바랍니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.