KT 에이블스쿨 24일차(1)

박기범·2023년 3월 6일
0

에이블스쿨

목록 보기
29/95

오늘부터 3일간 머신러닝&딥러닝의 실습시간 입니다.



실습

실습에서 사용했던 중요 전처리 밑 코드에 대해 포스팅하겠습니다.



날짜 데이터 formating

시계열 데이터에 있어서 날짜 데이터 formating은 매우 기본적인 거 같습니다.(물론 저는 엄청 해맸습니다,) 예를들어 시계열 데이터로 바꾸자할 때 int 혹은 float타입이라면 astype을 사용해서 str형으로 바꾸어 주어야합니다.

	데이터프레임['time'] = 데이터프레임['time'].astype('str')

해당 컬럼을 .astype('str')을 통해 object타입으로 바꾸어 주었다면 이제 .to_datetime()을 사용해줍니다.

	데이터프레임['time'] = pd.to_datetime(데이터프레임['time'], format='%Y%m%d%H')

여기서 알아야될 것은 format입니다.

만약 바꾸자하는 컬럼의 원소가 2023030602이런식으로 있다면 년 월 일 시간으로 있는 것이기 때문에 format='%Y%m%d%H'을 사용해서 date타입으로 형 변환해야합니다.
아직 format에 익숙하지 않아서 더 학습후에 시계열 format에 대해서도 포스팅하겠습니다.



shift연산

다음으로는 shift연산에 대해 알아보겠습니다.
shift연산자를 사용하면 원하는 컬럼 값을 위로 아래로 밀 수 있습니다. 예를들어 .shift(24)를 사용하게 된다면 컬럼의 값을 아래로 24칸 밀어서 대입하게 됩니다. 조금 더 자세한 예를 든다면 전일 같은 시간대의 미세먼지 농도를 가지는 컬럼을 만드세요라는 문제가 나오면 아래와 같이 작성해주면 됩니다.

	데이터프레임['전날의농도'] = 데이터프레임['미세먼지농도'].shift(24)

만약 컬럼이 시간대별로 나눠져있다고 치면 하루는 24시간이므로 전날 같은 시간대의 농도를 가지는 컬럼을 만들려면 .shift(24)를 해주면 됩니다.

그럼 만약 1시간 미래의 농도를 대입한 컬럼을 만든다고 가정하면 아래와 같이 작성해줄 수 있습니다.

	데이터프레임['한시간뒤의 미세먼지농도'] = 데이터프레임['미세먼지농도'].shift(-1)

음수로 지정해주면 그만큼 컬럼을 올려서 대입하기 때문에 -1이라고 치면 한칸 아래에 있는 데이터가 들어오는 것이므로 한시간 뒤의 미세먼지 농도를 가지는 컬럼이 완성되는 것입니다.



Date타입의 인덱스 접근

만약 .to_datetime()을 통해 Date타입으로 형 변환을 한 컬럼을 인덱스로 사용해주었다면 해당 컬럼의 년, 월, 일, 시간을 접근할 경우에는 아래와 같은 방식으로 접근하면 됩니다.

	데이터프레임['month'] = pd.DatetimeIndex(데이터프레임.index).year
    데이터프레임['month'] = pd.DatetimeIndex(데이터프레임.index).month
    데이터프레임['day'] = pd.DatetimeIndex(데이터프레임.index).day
    데이터프레임['hour'] = pd.DatetimeIndex(데이터프레임.index).hour

해당 형태로 접근하면 인덱스로 사용된 Date타입의 데이터를 뽑아낼 수 있습니다.







오늘부터 미니 프로젝트에 들어갔는데 생각보다 분석하는데 아직은 약하구나 라고 생각했습니다. 배운 것을 온저히 쏟아낼 수 있도록 더욱 정진하겠습니다.




※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.

profile
개발자가 되기 위한 한걸음

0개의 댓글