티스토리 뷰
기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고, 몇도인가요?
-
데이터 분석을 진행할 때 데이터의 전처리가 진행되어야 한다.
-
결측치 처리와 이상치 처리를 해야 한다.
-
결측치 처리
- raw 데이터는 문제의 소지가 있을 수 있다.
- 데이터가 없는 경우를 의미
- 삭제/ 평균,최고, 최저 등으로 값 대체
-
이상치 처리
- 데이터는 존재하는데 정상범위가 아닌 데이터
- 삭제하거나 대체
-
for문을 쓰는 것보다 성능이 빠른 풀이
import numpy as np
seoul2 = np.loadtxt("./data/seoul.csv", dtype=np.object, delimiter=',', skiprows=1)
print(seoul2)
# 전치행렬
print(seoul2.T)
# [['1907-10-01' '1907-10-02' '1907-10-03' ... '2020-09-04' '2020-09-05'
# '2020-09-06']
# ['108' '108' '108' ... '108' '108' '108']
# ['13.5' '16.2' '16.2' ... '23.3' '23.3' '21.7']
# ['7.9' '7.9' '13.1' ... '19.9' '19.2' '19.5']
# ['20.7' '22' '21.3' ... '27.5' '27.3' '24.4']]
# 최고 기온
# 최고온도를 알아내서 boolean indexing으로 날짜를 알아낼 수 있다.
high_temp_seoul = seoul2.T[4]
print(high_temp_seoul)
# ['20.7' '22' '21.3' ... '27.5' '27.3' '24.4']
# 결측치 Boolean Mask
print(high_temp_seoul == '')
print((high_temp_seoul == '').sum()) # 758개'
# 결측치 삭제
# boolean indexing을 이용해서 ''가 아닌 최고기온만 뽑아낸다.
high_temp_seoul[high_temp_seoul != '']
# array(['20.7', '22', '21.3', ..., '27.5', '27.3', '24.4'], dtype=object)
high_temp = high_temp_seoul[high_temp_seoul != ''].astype(np.float64).max() # 39.6
# 최고 기온을 알아냈으니, 최고 기온의 날짜 알아내기
# 최고기온 ndarray 안에서, 위에서 구한 최고 기온에 대한 boolean mask 만들기
print(high_temp_seoul == str(high_temp)) # 최대값만 True고 나머지는 False
print(seoul2.T[0][high_temp_seoul == str(high_temp)]) # 중복처리도 자동으로 됨
# ['2018-08-01']
'멀티캠퍼스 AI과정 > 03 Numpy' 카테고리의 다른 글
Numpy 10 - ndarray의 원소 추가와 삭제 (0) | 2020.09.09 |
---|---|
Numpy 09 - ndarray의 정렬 (0) | 2020.09.09 |
Numpy 08 - Numpy 집계함수와 axis(축) (0) | 2020.09.09 |
Numpy 07 - ndarray의 전치행렬과 Iterator (0) | 2020.09.09 |
Numpy 06 - ndarray의 사칙연산, 행렬곱, Broadcasting (0) | 2020.09.08 |
댓글