드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Retrofit2
  • AWS Lambda
  • fine tuning
  • AWS
  • volley
  • API
  • Java
  • Streamlit
  • GET
  • JWT
  • EC2
  • tensorflow
  • 안드로이드 스튜디오
  • pandas
  • 서버리스
  • CNN
  • Callback
  • aws s3
  • 액션바
  • Python
  • Lambda
  • rest api
  • 딥러닝
  • Ann
  • Transfer Learning
  • 깃이그노어
  • 네이버 API
  • flask
  • github
  • serverless

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Numpy/Pandas 에서 datetime 다루기
Python/Pandas

Numpy/Pandas 에서 datetime 다루기

2022. 12. 2. 18:09

파이썬의 datetime은 iterable 하지 않다.

그래서 넘파이 라이브러리에선 이를 보강해, array도 처리할 수 있는 datetime64 클래스를 만들었다.

넘파이를 기반으로 하는 판다스에서도 사용가능하다.

 

import numpy as np

someday = np.array('2022-05-11', dtype= np.datetime64)
someday
>>> array('2022-05-11', dtype='datetime64[D]')

someday + 10
>>> numpy.datetime64('2022-05-21')

someday - 35
>>> numpy.datetime64('2022-04-06')

someday + np.arange(5)
>>> array(['2022-05-11', '2022-05-12', '2022-05-13', '2022-05-14',
       '2022-05-15'], dtype='datetime64[D]')

 

date_list = ['2022-01-04', '2022-01-07', '2022-05-11', '2022-06-10', '2022-07-03']
# pd.to_datetime : datetime64 타입으로 바꿔준다
pd.to_datetime(date_list)
>>> DatetimeIndex(['2022-01-04', '2022-01-07', '2022-05-11', '2022-06-10',
                   '2022-07-03'],
                  dtype='datetime64[ns]', freq=None)

 

seoul.csv
1.08MB

df = pd.read_csv('../data/seoul.csv', encoding='cp949')

 

df['날짜'] # 문자열
>>> 0        1907-10-01
    1        1907-10-02
    2        1907-10-03
    3        1907-10-04
    4        1907-10-05
                ...    
    39921    2018-03-24
    39922    2018-03-25
    39923    2018-03-26
    39924    2018-03-27
    39925    2018-03-28
    Name: 날짜, Length: 39926, dtype: object
    
df['날짜'] = pd.to_datetime(df['날짜'])
df['날짜']
>>> 0       1907-10-01
    1       1907-10-02
    2       1907-10-03
    3       1907-10-04
    4       1907-10-05
               ...    
    39921   2018-03-24
    39922   2018-03-25
    39923   2018-03-26
    39924   2018-03-27
    39925   2018-03-28
    Name: 날짜, Length: 39926, dtype: datetime64[ns]
    
df['요일'] = df['날짜'].dt.strftime('%a')
df

 

위와 같이 .dt를 써서 기존에 알고 있던 datetime 함수들을 쓸 수 있다.

 

 

 

pandas.date_range()

# 시작날짜와 종료날짜를 셋팅하면, 알아서 날짜를 채워주는 함수
pd.date_range('2022-12-02', '2023-01-05')
>>> DatetimeIndex(['2022-12-02', '2022-12-03', '2022-12-04', '2022-12-05',
                   '2022-12-06', '2022-12-07', '2022-12-08', '2022-12-09',
                   '2022-12-10', '2022-12-11', '2022-12-12', '2022-12-13',
                   '2022-12-14', '2022-12-15', '2022-12-16', '2022-12-17',
                   '2022-12-18', '2022-12-19', '2022-12-20', '2022-12-21',
                   '2022-12-22', '2022-12-23', '2022-12-24', '2022-12-25',
                   '2022-12-26', '2022-12-27', '2022-12-28', '2022-12-29',
                   '2022-12-30', '2022-12-31', '2023-01-01', '2023-01-02',
                   '2023-01-03', '2023-01-04', '2023-01-05'],
                  dtype='datetime64[ns]', freq='D')

# 시간 단위로
pd.date_range('2022-11-30 09:00', '2023-02-05 11:00', freq='H')
>>> DatetimeIndex(['2022-12-02 09:00:00', '2022-12-02 10:00:00',
                   '2022-12-02 11:00:00', '2022-12-02 12:00:00',
                   '2022-12-02 13:00:00', '2022-12-02 14:00:00',
                   '2022-12-02 15:00:00', '2022-12-02 16:00:00',
                   '2022-12-02 17:00:00', '2022-12-02 18:00:00',
                   ...
                   '2022-12-10 02:00:00', '2022-12-10 03:00:00',
                   '2022-12-10 04:00:00', '2022-12-10 05:00:00',
                   '2022-12-10 06:00:00', '2022-12-10 07:00:00',
                   '2022-12-10 08:00:00', '2022-12-10 09:00:00',
                   '2022-12-10 10:00:00', '2022-12-10 11:00:00'],
                  dtype='datetime64[ns]', length=195, freq='H')

# 평일만
pd.date_range('2022-11-30', '2023-02-05', freq='B')
>>> DatetimeIndex(['2022-11-30', '2022-12-01', '2022-12-02', '2022-12-05',
                   '2022-12-06', '2022-12-07', '2022-12-08', '2022-12-09',
                   '2022-12-12', '2022-12-13', '2022-12-14', '2022-12-15',
                   '2022-12-16', '2022-12-19', '2022-12-20', '2022-12-21',
                   '2022-12-22', '2022-12-23', '2022-12-26', '2022-12-27',
                   '2022-12-28', '2022-12-29', '2022-12-30', '2023-01-02',
                   '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06',
                   '2023-01-09', '2023-01-10', '2023-01-11', '2023-01-12',
                   '2023-01-13', '2023-01-16', '2023-01-17', '2023-01-18',
                   '2023-01-19', '2023-01-20', '2023-01-23', '2023-01-24',
                   '2023-01-25', '2023-01-26', '2023-01-27', '2023-01-30',
                   '2023-01-31', '2023-02-01', '2023-02-02', '2023-02-03'],
                  dtype='datetime64[ns]', freq='B')

 

freq 에 대한 offset은 아래 표를 참고하도록 하자.

 

'Python > Pandas' 카테고리의 다른 글

Pandas - 날짜 단위로 그룹화하기 resample()  (0) 2023.01.08
Pandas 데이터프레임에서 boolean indexing의 활용  (0) 2022.12.01
Pandas 피벗 테이블(Pivot table)  (0) 2022.12.01
오픈API Goolglemaps Geocode로 위치정보 받아오기  (0) 2022.12.01
Pandas의 DataFrame.plot() 으로 시각화하기  (0) 2022.12.01
    'Python/Pandas' 카테고리의 다른 글
    • Pandas - 날짜 단위로 그룹화하기 resample()
    • Pandas 데이터프레임에서 boolean indexing의 활용
    • Pandas 피벗 테이블(Pivot table)
    • 오픈API Goolglemaps Geocode로 위치정보 받아오기
    드레:
    드레:

    티스토리툴바