Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 파이썬
- LOC
- 데이터분석
- 데이터프레임
- 파이썬기초
- 크롤링
- 넘파이함수
- 유클리디안거리
- DataFrame
- Python
- 판다스기초
- KNN알고리즘
- iloc
- np.argsort
- 넘파이
- 파이썬크롤링
- Numpy
- KNN
- pandas
- 워드클라우드
- 판다스
- 머신러닝
- np.sort
- reindex
- np.where
- K-NN
- 넘파이정렬
- np.where()
- 판다스인덱싱
- 판다스시리즈
Archives
- Today
- Total
해피러너의 Ns
np.where() 활용하여 조건에 맞는 값 위치 찾기 및 다른 값으로 대체하기 본문
np.where (condition, x, y) - 조건(condition)에 부합하면 x, 아니면 y를 출력한다 - x, y는 생략 가능하며, 이 경우에는 조건에 부합하는 index를 출력한다. - numpy.ndarray로 반환된다. |
우선, 간단하게 1차원 배열에 적용해보면, 30보다 크거나 같은 값의 위치를 반환한다.
1
2
3
4
5
|
a = np.array([10,20,30,40])
np.where(a>=30)
결과
(array([2, 3], dtype=int64),)
|
cs |
그러면 데이터 프레임에 적용해보자.
1
2
3
4
5
6
7
|
test = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=list('abc'))
test
a b c
0 1 2 3
1 4 5 6
2 7 8 9
|
cs |
조건에 부합하는 값의 위치값을 반환한다.
첫번째 array는 행, 두번째 array는 열 위치라고 생각하면 된다.
1
2
3
4
|
np.where((test<2) | (test>7))
결과
(array([0, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))
|
cs |
특정 칼럼으로 좁혀서도 가능하다.
1
2
3
4
|
np.where((test[['a','b']]<2) | (test[['a','b']]>7))
결과
(array([0, 2], dtype=int64), array([0, 1], dtype=int64))
|
cs |
이제 np.where(조건, x, y)를 적용해보자.
아래 예시는 조건에 만족하면 즉 2보다 작거나 7보다 크면, 'NA'로 대체, 아니면 본래 값 그대로 활용한다는 뜻이다.
1
2
3
4
5
6
|
np.where( (test<2) | (test>7), 'NA', test)
결과
array([['NA', '2', '3'],
['4', '5', '6'],
['7', 'NA', 'NA']], dtype='<U21')
|
cs |
데이터분석 시, 데이터프레임에서 어떤 조건에 속하는 값은 특정 값으로 대체하고자 할 때 활용가능하다.
예를 들어, 최소/최대값 대체
1
2
3
4
5
6
7
|
columns = test.columns
test = pd.DataFrame(np.where (test<2, 2, test), columns=columns) # 2보다 작은 값을 2로 대체
test
a b c
0 2 2 3
1 4 5 6
2 7 8 9
|
cs |
'파이썬(Python) > 넘파이(numpy)' 카테고리의 다른 글
np.sort(), np.argsort() 활용하여 넘파이 정렬하기 (0) | 2021.05.07 |
---|