해결된 질문
작성
·
117
0
cond=df['age'] <=0
df=df[~cond]
으로 0이거나 음수인값들을 제거를 한건데
첫작성) cond = df['age'] == round(df['age'],0)
수정작성) cond = df['age'] != round(df['age'],0
df=df[cond]
여기서 추가로 라운드로 0인값들을 제거한건가요?
첫작성 수정작성 하신 이걸 하신 이유가 뭔지 잘 이해가 안됩니다. 그리고 보시면 처음부터 cond 라는 변수를
수정작성까지 두번세번쓰면서 변수 내용이 계속 바뀐거 같은데 그 이유는 뭘까요 선생님~
답변 2
0
임의의 데이터
age
0 25.0
1 30.5
2 22.0
3 0.0
4 -5.0
5 45.0
6 30.0
7 29.9
첫 번째 코드에서는 나이가 0이거나 음수인 값을 제거하는 것입니다:
cond = df['age'] <= 0
df = df[~cond]
cond
는 df['age'] <= 0
이라는 조건을 만족하는 값들입니다. 이 조건을 만족하는 값들을 제거하려면 ~cond
를 사용하여 해당 조건을 만족하지 않는 값들만 남깁니다. 따라서, 위의 예시에서 0
과 -5
가 제거됩니다:
age
0 25.0
1 30.5
2 22.0
5 45.0
6 30.0
7 29.9
# 첫 작성
cond = df['age'] == round(df['age'], 0)
# 수정 작성
cond = df['age'] != round(df['age'], 0)
df = df[cond]
round(df['age'], 0)
는 소수점 첫째 자리에서 반올림한 값을 반환합니다. 첫 작성 코드에서는 df['age']
값이 반올림된 값과 동일한지 확인하여 조건을 만듭니다. 이 조건을 만족하는 값을 선택하게 됩니다. 예시에서는 25.0, 22.0, 45.0, 30.0이 해당됩니다.
수정 작성 코드에서는 !=
연산자를 사용하여 반올림한 값과 동일하지 않은 값을 선택합니다. 따라서 반올림했을 때 정수가 아닌 값들만 남깁니다:
age
1 30.5
7 29.9
0
안녕하세요, 인프런 AI 인턴입니다.
hankilzoa님의 질문은 데이터 전처리 과정에서 조건부 필터링의 목적과 조건 변경의 이유에 관한 것으로 이해됩니다. 특히, round
함수를 사용해서 소수점 나이 값을 다루는 과정에 대한 설명이 필요하신 것 같습니다.
두 번째 조건(cond = df['age'] == round(df['age'],0)
)에서 round(df['age'], 0)
는 df['age']
의 값들을 반올림하여 정수 부분만을 리턴합니다. 따라서, 이 조건은 나이가 정확히 정수인(즉, 반올림 했을 때 자기 자신과 동일한 값을 가지는) 경우를 필터링하려는 목적이 있습니다. 이후 수정된 조건(cond = df['age'] != round(df['age'],0)
)은 정확히 반대로, 반올림 했을 때 자기 자신과 다른 값을 가지는 경우, 즉 소수 부분이 있는 나이 값을 필터링하려는 목적을 가집니다. 즉, 소수점을 갖는 나이 값을 제외하려는 것이죠.
정리하자면, 첫 작성에서는 정수 나이 값만 가져가려고 했던 것이고, 수정 작성에서는 그 반대로 소수점을 가진 나이 값을 제외하려고 했던 것입니다. 변수 cond
를 수정하여 사용한 이유는 데이터 세트에서 다양한 조건에 따른 데이터 필터링을 수행하기 위함입니다.
참고하실 수 있는 유사 질문 링크는 다음과 같습니다:
이 정보가 hankilzoa님의 질문에 대한 이해에 도움을 줄 수 있기를 바랍니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.