빅데이터 분석기사/데이터마님

Q67 ~ 79 dt 시계열 전처리 잔뜩

유방울 2024. 5. 17. 17:24

q67

Yr_Mo_Dy에 년도가 2061년 이상의 경우에는 모두 잘못된 데이터이다. 해당경우의 값은 100을 빼서 새롭게 날짜를 Yr_Mo_Dy 컬럼에 정의하라

def fix_century(x):
	import datetime
    
    year = x.year - 100 if x.year >= 2061 else x.year
    return pd.to_datetime(datetime.date(hyear, x.month, x.day))

df['Yr_Mo_Dy'] = df['Yr_Mo_Dy'].apply(fix_century)

q68

df.groupby('Yr_Mo_Dy'.dt.year).mean()

q69 dt.weekday 

df['weekday'] = df['Yr_Mo_Dy'].dt.weekday

q70

조건 하나 -> lambda 사용!

df['WeekCheck'] = df.weekday.map(lambda x : 1 if x in [5,6] else 0)

q71

df.groupby(df['weekday'].dt.month).mean()

q72 fillna() 파라미터

method = 'ffill'

method = 'bfill'

df.fillna(method='ffill').fillna(method='bfill')

q73

df.groupby(df.Yr_Mo_Dy.dt.to_period('M')).mean()

q74 차분 diff()

df['RPT'].diff()

q75

rolling() 이동하는 method

df[['RPT','VAL']].rolling(7).mean()

 

 

서울시 미세먼지 데이터 ~!

년-월-일:시 컬럼을 pandas에서 인식할 수 있는 datetime 형태로 변경하라. 서울시의 제공데이터의 경우 0시가 24시로 표현된다

어렵노..

def change(x):
	import datetime
    date = x.split(':')[0]
    hour = x.split(':')[1]
    
    if hour == '24':
    	hour = '00:00:00'
        
        FinalDate = pd.to_datetime(date + '' + hour) + datetime.timedelta(days=1)
        
    else:
    	hour = hour + ':00:00'
        FinalDate = pd.to_datetime(date + '' + hour)
        
    return FinalDate
    
df['(년-월-일:시)'] = df['(년-월-일:시)'].apply(change)

q77

dt.day_name

df['dayName'] = df.(년-월-일:시).dt.day_name()

q78

df.groupby(['dayName','PM10등급'], as_index=False).size()

q79

시간이 연속적인 것이 차분을 했을 때 첫값은 na, 이후 모든 차분값이 동일하면 연속이라 판단

사실 이해 안됨 ㅋㅋㅋㅋ

unique는 왜 하는지. .. x는 왜 2 인지...ㅠㅠ

 

x = len(df.(년-월-일:시)).diff().unique())
if x == 2:
	ans = True
else:
	ans = False

q80