DateTime

# Date1
df = pd.read_csv("date.csv")
print(df['Date1'])
###df = pd.to_datetime(df['Date1']) #이 부분이 문제
df['Date1'] = pd.to_datetime(df['Date1'])
print(df['Date1'])
##pd.to_datetime(df['Date1'])는 'Date1' 컬럼의 값을 datetime 형식으로 변환한 Series를 반환
##Series를 다시 df에 할당하면, 이제 df는 더 이상 DataFrame이 아니라 Series가 됩니다.
##그 다음 줄에서 print(df['Date1'])를 실행하면,
##Series에는 'Date1'이라는 컬럼이 없기 때문에 KeyError가 발생
##df['Date1'] = pd.to_datetime(df['Date1']) 이렇게 해야 함
포맷 지정하는 경우
# Date2 (year 4자리: %Y)
df = pd.read_csv("date.csv")
print(df['Date2'])
df['Date2']=pd.to_datetime(df['Date2'], format='%Y:%m:%d')
print(df['Date2'])
## Y-> 연도가 4자리/ y -> 연도가 2자리
# Date3 (year 2자리: %y)
df = pd.read_csv("date.csv")
print(df['Date3'])
df['Date3']=pd.to_datetime(df['Date3'], format='%y/%m/%d')
print(df['Date3'])
- format 지정할 때 대문자Y는 연도 4자리인 경우, 소문자y는 연도 2자리인 경우
# DateTime1
df = pd.read_csv("date.csv")
print(df['DateTime1'])
df['DateTime1']=pd.to_datetime(df['DateTime1'], format='%y-%m-%d %H:%M:%S')
print(df['DateTime1'])
##format에 시간 넣을 때 시간은 모두 대문자!!!!!!
##H M S !!!!!!! 기억해라
- format에 시간 넣을 때 시간은 모두 대문자!!!!!!
- H M S !!!!!!! 기억해라
dt활용 (년, 월 일, 시간, 분, 초 추출)
# 년, 월, 일, 시간, 분, 초 추출
df['year']=df['DateTime4'].dt.year
df['month']=df['DateTime4'].dt.month
df['day']=df['DateTime4'].dt.day
df['hour']=df['DateTime4'].dt.hour
df['minute']=df['DateTime4'].dt.minute
df['second']=df['DateTime4'].dt.second
df
##datetime 형태로 변경을 하면 dt를 사용할 수 있게 됨
##이렇게 컬럼형태로 만든 이유는
##문제에서 2024년 or 2025년 데이터만 다뤄라/ 2024년 2월만 뽑아서 합계나 평균이나 중앙값을 찾아라 라는 문제가 나오기 때문
dayofweek
#요일 dayofweek 0:월, 1:화, 2:수, 3:목, 4:금, 5:토, 6:일
df['DateTime4'].dt.dayofweek
# 주말
df['is주말']=df['DateTime4'].dt.dayofweek >= 5
df
Timedelta
- datetime이 특정 시점의 날짜와 시간을 나타내는 것이라면
- timedelta는 두 시점을 차이를 나타내는 것
# 데이터 불러오기 (usecols, parse_dates)
df = pd.read_csv('date.csv', usecols=['DateTime4'], parse_dates=['DateTime4'])
df
##usecols=['DateTime4'] -> csv 파일을 불러올 때 특정 열만 불러오는 것
##parse_dates -> 불러오는 동시에 datetime 형태로 바꿔서 불러오는 것
# 시간 +/- (3주, 3일, 3시간, 3분, 3초 이전과 이후)
diff = pd.Timedelta(weeks=3,days=3, hours=3, minutes=3,seconds=3)
df['+diff'] = df['DateTime4'] + diff
df['-diff'] = df['DateTime4'] - diff
df
##weeks='3' -> 이렇게 숫자에 따옴표 붙여서 문자열 만드는 이상한 짓거리 하지마라
total_seconds()
# 기간을 초로 변환 total_seconds()
print(diff.dt.total_seconds()) #초
print(diff.dt.total_seconds()/60) #분
print(diff.dt.total_seconds()/60/60) #시간
print(diff.dt.total_seconds()/60/60/24) #일
##total_seconds는 timedelta에만 적용이 가능하다는 점을 꼭 유의할 것!!!!!
##total_seconds는 94일 20시간을 모두 초로 변경할 값을 말함
# 일(days), 초(seconds)
print(diff.dt.days)
print(diff.dt.seconds)
##여기서의 seconds는 94일 20시간에서 20시간만을 초로 변경한 것을 말함
##그래서 seconds가 아닌 total_seconds를 사용해야함
- total_seconds() 는 timedelta에만 적용 가능
'빅데이터분석기사 > 작업형1' 카테고리의 다른 글
| [작업형1] 데이터마님 전처리 100 헷갈리는 것 정리 (5) | 2025.06.19 |
|---|---|
| [작업형1] 모의문제 정리 (1) | 2025.06.16 |
| [작업형1] 섹션3 판다스 코드 정리 (3) | 2025.06.15 |