티스토리 뷰

기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고, 몇도인가요?

  • 데이터 분석을 진행할 때 데이터의 전처리가 진행되어야 한다.

  • 결측치 처리와 이상치 처리를 해야 한다.

  • 결측치 처리

    • 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']
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
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
글 보관함