-
[NumPy] np.where()으로 조건에 맞게 0 / 1 정하기AI, DataScience 2022. 2. 9. 10:00728x90
어떤 사람이 당뇨병인지 아닌지 판단하는 방법은 다음과 같다.
- 인슐린 약을 섭취하는가
- 공복 혈당이 126mg/dl 이상일 때
- 식사 후 2시간 후 혈당이 200mg/dl 이상일 때
- 당화 헤모글로빈이 6.5% 이상일 때
위 4가지 조건 중 하나 이상 만족하면 당뇨병이라고 판단한다
필자는 이를 알기 위해 엑셀 함수(IF, OR 등)를 이용하려고 했으나...
조건도 복잡하고
데이터가 많고
느려서
다른 방법을 찾았다.
np.where()는
numpy.where(condition,[x,y])
이러한 형태로 쓸 수 있다.
각각의 입력에서 condition이 참이면 x, 거짓이면 y를 반환한다.
이를 이용하여 당뇨병인지 아닌지를 판단하여 변수를 부여할 수 있다.
dependent['DIABETES'] = np.where((dependent['AS1_DRUGINSCU'] == 0) & (dependent['AS1_GLU0_TR'] < 120) & (dependent['AS1_GLU120_TR'] < 200) & (dependent['AS1_HBA1C'] < 6.5), 0, 1) dependent['DIABETES'].value_counts()
value_counts()의 결과 위 코드의 설명
dependent는 pandas의 DataFrame이다.
np.where의 결과의 반환값(ndarray)을 'DIABETES' 라는 이름으로 dependent에 추가하였다.
코드의 조건으로
AS1_DRUGINSCU이 0일 때, AS1_GLU0_TR이 120 미만일 때, AS1_GLU120_TR이 200미만일 때, AS1_HBA1C이 6.5를 모두 만족할 때에만 0(당뇨병 아님)으로 정의했다.그리고 나머지는 1(당뇨병)로 정의했다.위 연산의 수행 결과로, 당뇨병인 변수가 1268개, 정상이 8436개 나오는 것을 볼 수 있다.
참고: https://www.delftstack.com/ko/api/numpy/python-numpy-where/
728x90'AI, DataScience' 카테고리의 다른 글
[딥러닝] TensorFlow, Keras, PyTorch 특징 비교, 장단점 (0) 2022.02.15 [PyTorch] 단순 선형 회귀, 다중 선형 회귀 연습 (0) 2022.02.14 오늘부터 듣는 것 (0) 2022.02.08 [Pandas] 데이터를 그룹으로 나누어 각 그룹 별 평균으로 결측값 대치하기 (성별과 나이 별로 키, 몸무게 평균값 대치) (0) 2022.01.24 [Colab] Mountpoint must not already contain files 에러 해결 (0) 2022.01.05