본문 바로가기
자격증/빅데이터분석기사

빅데이터분석기사 실기 1과목 날짜시간 데이터 index

by goemgoem-i 2024. 11. 16.
반응형

날짜 시간 데이터는 별도의 파일이 따로 없기 때문에 dataframe 을 새로 생성해서 연습해보겠다

 

#데이터 만들기
df = pd.DataFrame( {
    '날짜': ['20230105', '20230105', '20230223', '20230223', '20230312', '20230422', '20230405'],
    '물품': ['A', 'B', 'A', 'B', 'A', 'B','A'],
    '판매수' : ['5','10', '15', '15', '20', '25', '40'],
    '개당수익': [500, 600, 500, 600, 600, 700, 600]})
df

 

 

 

1) 날짜 다루기

먼저 df로 전체적인 데이터 파악 

 

 

 

df.info()로 데이터 특성 파악

날자가 object라서 숫자로 변경해줘야함

 

 

df['해당변수명'] = pd.to_datetime(df['날짜')

작성하니까 날짜가 datetime 형태로 변경됨

 

 

년 , 월 , 일  별로 각 열 새로 만들기

df['새로 만들 변수명'] = df['해당 변수명']. dt.year

 

 

 

1) 번호 인덱싱이 있는 경우

날짜 구간 구하기 - between 함수

이때 날짜와 시간이 같이 있는 경우에는 무조건 형식 동일하게 작성하기 

between 조건문 작성하고 df[ ]로 한번 더 감싸줌 !! 

 

 

 

 

2) 날짜로 인덱싱을 해버린 경우

df = df.set_index('변수명', drop = Ture or False)

 

- 인덱스 새로 지정 함수 df.set_index 

- 열 값을 인덱스로 설정 할 때 해당 열을 삭제할지 결정하는 유무 drop= Ture / drop = False

 

drop=True (기본값):

  • 기존 열이 인덱스로 설정되면서 데이터프레임에서 삭제

drop=False:

  • 기존 열이 인덱스로 설정되지만, 데이터프레임에서 유지

 

 

loc는 인데스가 있는 경우만 가능

위에 사진은 날짜라는 인덱스 존재

 

 

 

 

2) 시간 다루기

 

1) 번호가 인덱싱인 경우

시간도 위에 날짜와 동일함 

다만 시간만 기준으로 잡는거더라도 앞에 날짜까지 풀 문장으로 작성해줘야함

 

df = df[조건] 형태로 되어있는데 

그냥 df[조건] 만해도 나오긴 하지만 

결과값을 보여줘야하니 df = ~ 형태로 작성하자 

 

 

 

2) 시간이 인덱싱인 경우

 

날짜 상관없이 시간으로만 필터링 하는 방법 : 시간(time)이 인덱스에 와야함 

 

df.set_index('time')

-> 이전과 다르게 drop이 없음 -> drop의 기본값은 Ture로 인덱스 인 열을 제거함 

 

df.between( )  이 아닌 시간의 경우 df.between_time( start_time = ' ' , end_time = ' ' ) 형태로 작성

 

 

위에 날짜와 마찬가지로 index에 time이 있을 때 loc 사용 가능

 

[결론]

between( ) 함수 :  시간이 변수로 있어야함

between_time( ) 함수 또는 loc [ ] 함수 : 시간이 인덱스에 위치해 있어야함

반응형