데이터 범위 제약

Python으로 데이터 정제하기

Adel Nehme

VP of AI Curriculum, DataCamp

동기 부여

movies.head()
     movie_name     avg_rating
0    The Godfather           5
1    Frozen 2                3
2    Shrek                   4
...    
Python으로 데이터 정제하기

동기 부여

import matplotlib.pyplot as plt
plt.hist(movies['avg_rating'])
plt.title('영화 평균 평점 (1-5)')

heart_rate_normal

Python으로 데이터 정제하기

동기 부여

미래 가입이 가능할까요?

# datetime 임포트
import datetime as dt
today_date = dt.date.today()
user_signups[user_signups['subscription_date'] > dt.date.today()]
   subscription_date  user_name         ...             Country
0         01/05/2021      Marah         ...             Nauru
1         09/08/2020     Joshua         ...             Austria
2         04/01/2020      Heidi         ...             Guinea
3         11/10/2020       Rina         ...             Turkmenistan
4         11/07/2020  Christine         ...             Marshall Islands
5         07/07/2020     Ayanna         ...             Gabon

Python으로 데이터 정제하기

범위를 벗어난 데이터 처리 방법

  • 데이터 삭제
  • 사용자 지정 최소/최대 설정
  • 결측으로 처리 후 대치
  • 비즈니스 가정에 따른 값 설정
Python으로 데이터 정제하기

영화 예시

import pandas as pd
# 평점 > 5 인 영화 출력
movies[movies['avg_rating'] > 5]
         movie_name  avg_rating
23  A Beautiful Mind           6
65   La Vita e Bella           6
77            Amelie           6
# 필터링으로 삭제
movies = movies[movies['avg_rating'] <= 5]

# .drop()으로 삭제 movies.drop(movies[movies['avg_rating'] > 5].index, inplace = True)
# 결과 확인 assert movies['avg_rating'].max() <= 5
Python으로 데이터 정제하기

영화 예시

# avg_rating > 5 는 5로 변환
movies.loc[movies['avg_rating'] > 5, 'avg_rating'] = 5
# 단언문
assert movies['avg_rating'].max() <= 5

출력이 없으면 통과입니다

Python으로 데이터 정제하기

날짜 범위 예시

import datetime as dt
import pandas as pd
# 데이터 타입 출력
user_signups.dtypes
subscription_date    object
user_name            object
Country              object
dtype: object
# 날짜로 변환
user_signups['subscription_date'] = pd.to_datetime(user_signups['subscription_date']).dt.date
Python으로 데이터 정제하기

날짜 범위 예시

today_date = dt.date.today()

데이터 삭제

# 필터링으로 삭제
user_signups = user_signups[user_signups['subscription_date'] < today_date]

# .drop()으로 삭제 user_signups.drop(user_signups[user_signups['subscription_date'] > today_date].index, inplace = True)

상한으로 날짜 고정

# 필터링으로 처리
user_signups.loc[user_signups['subscription_date'] > today_date, 'subscription_date'] = today_date
# 단언문 확인
assert user_signups.subscription_date.max().date() <= today_date
Python으로 데이터 정제하기

Passons à la pratique !

Python으로 데이터 정제하기

Preparing Video For Download...