데이터를 분석하다 보면 자주 사용하게 되는 것 중 하나가 날짜가 아닐까 싶다.
원본 데이터의 날짜 컬럼을 사용할 수도 있지만, 만약 특정 년, 월, 일, 요일 등을 따로 뽑아내어 분석하고 싶다면 어떻게 해야할까?
날짜 데이터를 활용할 때 사용하는 모듈인 datetime에 대하여 정리해보자.
datetime 모듈의 자료형
자료형 date: 그레고리안 달력을 사용해서 날짜(연, 월, 일)를 저장
자료형 time: 하루의 시간을 시, 분, 초, 마이크로초 단위로 저장
자료형 datetime: 날짜와 시간을 저장
자료형 timedelta: 두 datetime 값 간의 차이(일, 초, 마이크로초)를 표현
자료형 tzinfo: 지역시간대를 저장하기 위한 기본 자료형
data_range: 날짜 범위 생성
pandas.data_range를 사용하면 특정 빈도에 따라 지정한 길이만큼 DatetimeIndex를 생성
pd.date_range(start = '날짜 범위 시작' end = 날짜 범위 끝 periods = 생성할 Timestamp 개수 freq = 시간 간격 tz = 시간대(timezone)
빈도와 날짜 오프셋(Frequencies and Date Offsets)
- pandas에서 빈도는 기본 빈도(basic frequency) 와 배수의 조합으로 이루어짐
- freq 인수로 특정한 날짜만 생성되도록 할 수 있음
많이 사용하는 freq 인수값
s: 초
T: 분
H: 시간
D: 일(day)
B: 주말이 아닌 평일
W: 주(일요일)
W-MON: 주(월요일)
M: 각 달(month)의 마지막 날
MS: 각 달의 첫날
BM: 주말이 아닌 평일 중에서 각 달의 마지막 날
BMS: 주말이 아닌 평일 중에서 각 달의 첫날
WOM-2THU: 각 달의 두번째 목요일
Q-JAN: 각 분기의 첫달의 마지막 날
Q-DEC: 각 분기의 마지막 달의 마지막 날
# 예시1) 주말이 아닌 평일
pd.date_range("2022-4-1", "2022-4-30", freq="B")
# 예시2) 주(일요일)만 출력
pd.date_range("2022-1-1", "2022-12-31", freq="W")
dtype부터 datetime으로 바꾸기
# reserve_datetime(본인이 불러온 데이터 중 날짜가 있는 컬럼) -> datetime로 변환
df['reserve_datetime'] = pd.to_datetime(df['reserve_datetime'])
df.dtypes
연도별/월별 컬럼 추가하기
# 월별 매출 (df_by_ym)
# reserve_datetime 컬럼을 인덱스로 설정
# df 에 insert 이용하여 연, 월 컬럼 생성 -> 연, 월 컬럼으로 groupby 사용
df.insert(4, 'Year', df.reserve_datetime.dt.year)
df.insert(5, 'Month', df.reserve_datetime.dt.month)
df.head()

요일별 컬럼도 추가해보기
# 요일별 매출 (df_by_d_of_w)
# 요일 컬럼을 만들어서 groupby
df.insert(6, 'DayofWeek', df.reserve_datetime.dt.dayofweek)
df.head()

이렇게 컬럼을 추가해보았다면,
원하는대로 월별 매출, 요일별 매출 등 원하는 분석을 할때에 유용하게 사용할 수 있다.
'Python > 데이터 분석' 카테고리의 다른 글
[python] matplotlib 시각화 한글 폰트 오류 문제 해결법 (맥, 윈도우) (0) | 2022.05.03 |
---|---|
[python] 결측치 확인 및 데이터프레임 병합 (0) | 2022.05.03 |
[python] seaborn 데이터 시각화 라이브러리 활용 (0) | 2022.04.11 |