1. 문자형을 날짜형으로 변경: pd.to_datetime(컬럼, format='날짜 형식')
#examples
pd.to_datetime(df['Date'], format='%Y-%m-%d')
df['Date1'] = pd.to_datetime(df['Date'], format='%Y-%m-%d') #새로운 컬럼에 변환한 값 넣기
df=pd.read_csv('url',parse_dates=['col_name']) #불러올때 'col_name'의 자료형을 바로 datetime으로 변경해서 호출하기
날짜 형식
| 코드 | 의미 | 예시 |
| %Y | 연도 (4자리) | 2025 |
| %y | 연도 (2자리) | 25 |
| %m | 월 (2자리) | 07 |
| %B | 월 이름 (영문, 전체) | July |
| %b | 월 이름 (영문, 축약) | Jul |
| %d | 일 (2자리) | 11 |
| %A | 요일 이름 (영문, 전체) | Friday |
| %a | 요일 이름 (영문, 축약) | Fri |
| %w | 요일 숫자 (0=일요일 ~ 6=토요일) | 5 |
| %j | 연중 일수 (1~366) | 192 |
시간 형식
| 코드 | 의미 | 예시 |
| %H | 시 (24시간제, 00~23) | 14 |
| %I | 시 (12시간제, 01~12) | 02 |
| %p | AM / PM | PM |
| %M | 분 (00~59) | 35 |
| %S | 초 (00~59) | 45 |
| %f | 마이크로초 (6자리) | 000000 |
2. 날짜 형식 변경
column_name.dt.strftime(날짜형식)
#example
df['Date1'].dt.strftime('%m-%d %H:%M')
3. dt연산자
dt.year #연도
dt.month #월
dt.day #일
dt.dayofweek #요일(0-월요일, 6-일요일) #day_of_week
dt.day_name() #요일을 문자열로
df['year'] = df['Date1'].dt.year
df['month'] = df['Date1'].dt.month
df['day'] = df['Date1'].dt.day
df['dayofweek'] = df['Date1'].dt.dayofweek
df['dayname'] = df['Date1'].dt.day_name()
#이미 있는 날짜형('%Y-%m-%d %H:%M')이 있을때, 여기서 ymd만 뽑기
df['new_col_name'] = df['col_name'].dt.date.astype('datetime64')
#ymd에서 ym뽑기, 꼭 ymd아니고, datetime 인 모든 데이터 형태에서 월단위를 뽑을수있음
df['new_col_name(ym)'] = df['col_name(ymd)'].dt.to_period('M')
| 속성이름 | 설명 | 결과 형태 | 요일 값 | 사용 예 |
| dayofweek | 요일을 숫자로 반환 (0=월) | 정수 (int) | 0~6 | df['date'].dt.dayofweek |
| day_of_week | dayofweek의 alias (동의어) | 정수 (int) | 0~6 | df['date'].dt.day_of_week |
| day_name() | 요일을 이름으로 반환 | 문자열 (str) | 'Monday' 등 | df['date'].dt.day_name() |
4. 날짜계산
#day 연산: pd.Timedelta(day=숫자)
#month 연산: DateOffset(months=숫자)
#year 연산: DateOffset(years=숫자)
df['minus day7'] = df['Date1'] - pd.Timedelta(days=7)
df.head()
from pandas.tseries.offsets import DateOffset
df['plus month1'] = df['Date1'] + DateOffset(months=1)
df['minus year3'] = df['Date1'] - DateOffset(years=3)
df.head()
5. 날짜 구간 데이터 만들기
#pd.date_range(start=시작일자, end=종료일자, periods=기간수, freq=주기)
D #일별
W #주별
M #월별 말일
MS #월별 시작일
A #연도별 말일
AS #연도별 시작일
pd.date_range(start='2020-01-01', periods=30, freq='D')
pd.date_range(start='2020-01-01', end='2023-06-30', freq='A')

6. 기간 이동 계산
col_name.rolling().집계함수 #rolling함수는 이동평균 구할때 많이 사용함
#7일 이동평균
df1['ma7'] = df1['Temp'].rolling(7).mean() #mean외, sum(), min(), max() 등 다양하게 가능
df1.head(20)
7. 행 이동
col_name.shift(이동할 행의 수)
#example
df2['Temp shift1'] = df2['Temp'].shift(1) #1개행씩 밀림. 음수 넣으면 위로 칸을 땡길 수 있음
df2.head()
df2['pct change'] = (df2['Temp shift1'] - df2['Temp'])/df2['Temp'] #전날대비 증감률 계산
df2.head()


'Python_Wiki > Python_Library' 카테고리의 다른 글
| pandas - 데이터 결합: join(파이썬) / merge / concat (1) | 2025.07.14 |
|---|---|
| Pandas 고급함수: apply, map (0) | 2025.07.14 |
| 웹크롤링: Selenium + chrome driver (0) | 2025.07.10 |
| 산점도 맵 scatter map 그리기 (feat. matplotlib) (0) | 2025.06.11 |
| library 업데이트에 따른 경고문 + 대체한 입력 방법 (0) | 2025.06.06 |