참조 :
한 권으로 끝내는 <판다스 노트>
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 |
댓글