본문 바로가기
pandas

pd / 날짜 / 시간

by 자동매매 2023. 12. 16.

참조 :

한 권으로 끝내는 <판다스 노트>

https://e-koreatech.step.or.kr/

 

 

도큐먼트

  • pandas.Series.dt.year: 연도
  • pandas.Series.dt.quarter: 분기
  • pandas.Series.dt.month: 월
  • pandas.Series.dt.day: 일
  • pandas.Series.dt.hour: 시
  • pandas.Series.dt.minute: 분
  • pandas.Series.dt.second: 초
  • pandas.Series.dt.microsecond: micro 초
  • pandas.Series.dt.nanosecond: nano 초
  • pandas.Series.dt.week: 주
  • pandas.Series.dt.weekofyear: 연중 몇 째주
  • pandas.Series.dt.dayofweek: 요일
  • pandas.Series.dt.weekday: 요일 (dayofweek과 동일)
  • pandas.Series.dt.dayofyear: 연중 몇 번째 날

 1) to_datetime

pandas.to_datetime(param,   format)

 param: 변환할 열명

 format: 날짜 변환 형식 문자열

 

# 실습용 데이터셋 다운로드
!pip install opendata-kr -q

from opendata import dataset

dataset.download('서울시자전거')

 

# 데이터셋 로드
df2 = pd.read_csv('data/seoul_bicycle.csv')
df2.head()

 

df2.info()

 

RangeIndex: 327231 entries, 0 to 327230
Data columns (total 11 columns):
 #   Column  Non-Null Count   Dtype  
---  ------  --------------   -----  
 0   대여일자    327231 non-null  object 
 1   대여소번호   327231 non-null  int64  
 2   대여소명    327231 non-null  object 
 3   대여구분코드  327231 non-null  object 
 4   성별      272841 non-null  object 
 5   연령대코드   327231 non-null  object 
 6   이용건수    327231 non-null  int64  
 7   운동량     327231 non-null  object 
 8   탄소량     327231 non-null  object 
 9   이동거리    327231 non-null  float64
 10  이용시간    327231 non-null  int64  
dtypes: float64(1), int64(3), object(7)
memory usage: 27.5+ MB

 


대여일자 컬럼은 object로 인식, datetime타입으로 변경해야 .dt 접근자를 사용할 수 있습니다.

pd.to_datetime(): datetime type으로 변환합니다.

df2['대여일자'] = pd.to_datetime(df2['대여일자'])
# df2['대여일자'] = pd.to_datetime(df2['대여일자'], format="%Y-%m-%d")

 

df2.info()
RangeIndex: 327231 entries, 0 to 327230
Data columns (total 11 columns):
 #   Column  Non-Null Count   Dtype         
---  ------  --------------   -----         
 0   대여일자    327231 non-null  datetime64[ns]
 1   대여소번호   327231 non-null  int64         
 2   대여소명    327231 non-null  object        
 3   대여구분코드  327231 non-null  object        
 4   성별      272841 non-null  object        
 5   연령대코드   327231 non-null  object        
 6   이용건수    327231 non-null  int64         
 7   운동량     327231 non-null  object        
 8   탄소량     327231 non-null  object        
 9   이동거리    327231 non-null  float64       
 10  이용시간    327231 non-null  int64         
dtypes: datetime64[ns](1), float64(1), int64(3), object(6)
memory usage: 27.5+ MB

 

df2['대여일자'].dt.year
df2['대여일자'].dt.month
df2['대여일자'].dt.day
df2['대여일자'].dt.dayofweek

 

df3 = pd.DataFrame([], index=df1.index)
df3["datetime"] = df2["대여일자"]
df3["week"] = df3["datetime"].dt.week
df3["weekday"] = df3["datetime"].dt.weekday
df3["dayofyear"] = df3["datetime"].dt.dayofyear

df3
datetime	week	weekday	dayofyear
0	2020-01-20	4	0	20
1	2020-01-20	4	0	20
2	2020-01-20	4	0	20
3	2020-01-20	4	0	20
4	2020-01-20	4	0	20
...	...	...	...	...
886	2020-01-20	4	0	20
887	2020-01-20	4	0	20
888	2020-01-20	4	0	20
889	2020-01-20	4	0	20
890	2020-01-20	4	0	20
891 rows × 4 columns

 

2) date_range 함수 : 일정 간격으로 시간 데이터를 생성

pandas.date_range(start, end, periods, freq, tz)

    • start, end: 데이터 시작, 시간 지정

    • periods: 기간의 수를 지정

D W MS M H T S
일별 주별 월별 시작일 월별 말일 시간별 분별 초별

    • freq: 시간 간격 설정

 

import pandas as pd 
dates=pd.date_range(start='2019-01-01', end='2019- 12-31', freq='3D')
dates
DatetimeIndex(['2019-01-01', '2019-01-04', '2019-01-07', '2019-01-10',
               '2019-01-13', '2019-01-16', '2019-01-19', '2019-01-22',
               '2019-01-25', '2019-01-28',
               ...
               '2019-12-03', '2019-12-06', '2019-12-09', '2019-12-12',
               '2019-12-15', '2019-12-18', '2019-12-21', '2019-12-24',
               '2019-12-27', '2019-12-30'],
              dtype='datetime64[ns]', length=122, freq='3D')

 

3) period_range 함수 : 일정 간격으로 시간 데이터를 생성

pandas.date_range(start, end, periods, freq, tz)

    • start, end (생략 가능) : 데이터 시작,  시간 지정

    • periods: 기간의 수를 지정

D W MS M H T S
일별 주별 월별 시작일 월별 말일 시간별 분별 초별

    • freq: 시간 간격 설정

import pandas as pd 
date_times=pd.period_range(start='2019-01-01',periods=20, freq='3H')
date_times
PeriodIndex(['2019-01-01 00:00', '2019-01-01 03:00', '2019-01-01 06:00',
             '2019-01-01 09:00', '2019-01-01 12:00', '2019-01-01 15:00',
             '2019-01-01 18:00', '2019-01-01 21:00', '2019-01-02 00:00',
             '2019-01-02 03:00', '2019-01-02 06:00', '2019-01-02 09:00',
             '2019-01-02 12:00', '2019-01-02 15:00', '2019-01-02 18:00',
             '2019-01-02 21:00', '2019-01-03 00:00', '2019-01-03 03:00',
             '2019-01-03 06:00', '2019-01-03 09:00'],
            dtype='period[3H]')

 

'pandas' 카테고리의 다른 글

matplotlib 그래프 종류  (0) 2023.12.15
matplotlib  (0) 2023.12.14
연결(Concat)과 병합(Merge)  (0) 2023.12.12
Groupby와 Pivot table  (0) 2023.12.12
데이터 전처리, 추가, 삭제, 변환  (0) 2023.12.12

댓글