728x90
시계열 데이터를 불러올 때 특정 컬럼만 가져오고 싶다면 usecols를 사용하면 된다.
해당 컬럼이 년월일 시분초로 되어있다면 parse_dates 사용해서 dateframe형식으로 넣어주면 된다.
df = pd.read_csv("date.csv", usecols=["DateTime4"], parse_dates=["DateTime4"])
df
datetime을 사용하면 현재시간을 받아올 수 있으며, timedelta로 datetime 객체의 더하기 빼기를 수행할 수 있다.
- Timedelta(days=더할날짜) 이후 데이터프레임에 변수 day를 더해주면 된다.
- Timedelta(hours=더할시간) 이후 데이터프레임에 변수 timed을 더해주면 된다.
# 100일째 되는 날
day = pd.Timedelta(days=100)
df["DateTime4"] + day
# 100시간 이후
time = pd.Timedelta(hours=100)
df["DateTime4"] + time
시간을 연산하는 문제가 출제될 수 있음
이렇게 3주 3일 3시간 3분 3초 이전/이후의 경우 Timedelta 괄호 안에 다 넣어주면 한번에 처리된다.
# 시간 +/- (3주 3일 3시간 3분 3초 이전과 이후)
diff = pd.Timedelta(weeks=3, days=3, hours=3, minutes=3, seconds=3)
df["이전"] = df["DateTime4"] - diff
df["이후"] = df["DateTime4"] + diff
df
Timedelta 사용하게 되면 datetime형태였던 데이터가 timedelta형으로 바뀌게 된다. (사칙연산으로 계산도 가능)
➡️ 기출에선 사칙연산 결과를 timedelta형으로 출력하는 것이 아니라 초나 분, 일(days)로 변환하라고 나왔음
# timedelta 자료형(datetime간의 연산 결과)
diff = df["100일"] - df["100시간"]
diff
기간을 초로 변환하기 위해서는 total_seconds() 사용하면 된다.
연산결과 저장한 변수.dt.total_seconds()
diff.dt.total_seconds()
total_seconds()를 활용해 초, 분, 시간, 일 까지 알 수 있다.
total_seconds()는 95일 20시간을 전부 변환한다.
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/60) # 일
연산결과 저장한 변수.dt.days 와 연산결과 저장한 변수.dt.seconds 에서는 95일 20시간 중 20시간만 변환한다.
그래서 기간의 초를 구하는 문제에서는 total_seconds()를 사용해야한다.
print(diff.dt.days) # 일
print(diff.dt.seconds) # 초
반올림은 round 사용
# 반올림 (ex: 5.49분) 30초 이상이면 올림, 30초 미만이면 버림
value = 5.49
print(round(value))
728x90
'Data > 빅데이터분석기사' 카테고리의 다른 글
[빅데이터분석기사] 작업형1 모의문제3+4 (0) | 2025.06.13 |
---|---|
[빅데이터분석기사] 작업형1 모의문제1+2 (0) | 2025.06.13 |
[빅데이터분석기사] 판다스6 - 시계열 데이터1 (0) | 2025.06.11 |
[빅데이터분석기사] 판다스5 - 그룹핑, 병합, 피벗테이블 (1) | 2025.06.10 |
[빅데이터분석기사] 판다스4 - 문자열, 내장함수 (1) | 2025.06.10 |