가져오기 수정: 날짜 파싱

pandas로 빠르고 간편한 데이터 적재

Amany Mahfouz

Instructor

날짜/시간 데이터

  • 날짜/시간은 고유한 데이터 타입과 내부 표현을 가집니다
  • Datetime 값은 문자열 표현으로 변환할 수 있습니다
  • 문자열 형식을 나타내는 공통 코드 집합이 있습니다
pandas로 빠르고 간편한 데이터 적재

pandas와 날짜/시간

  • 기본적으로 datetime 열은 객체(문자열)로 로드됩니다
  • 열이 datetime임을 parse_dates로 지정합니다 (dtype 아님)
  • parse_dates에 전달 가능한 값:
    • 파싱할 열 이름 또는 번호의 리스트
    • 결합하여 파싱할 열들의 리스트를 담은 리스트
    • 키는 새 열 이름, 값은 함께 파싱할 열 리스트인 딕셔너리
pandas로 빠르고 간편한 데이터 적재

pandas와 날짜/시간

형식이 다른 날짜/시간 열을 담은 스프레드시트

pandas로 빠르고 간편한 데이터 적재

pandas와 날짜/시간

표준 형식 열이 강조된 날짜/시간 데이터 스프레드시트

pandas로 빠르고 간편한 데이터 적재

pandas와 날짜/시간

날짜만 있는 열과 시간만 있는 열이 강조된 스프레드시트

pandas로 빠르고 간편한 데이터 적재

pandas와 날짜/시간

특이한 datetime 형식의 열이 강조된 날짜/시간 스프레드시트

pandas로 빠르고 간편한 데이터 적재

날짜 파싱

# 파싱할 날짜 열 나열
date_cols = ["Part1StartTime", "Part1EndTime"]

# 파일 로드: 표준 datetime 열 파싱 survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
pandas로 빠르고 간편한 데이터 적재

날짜 파싱

# 타임스탬프 열의 데이터 타입 확인
print(survey_df[["Part1StartTime", 
                 "Part1EndTime", 
                 "Part2StartDate", 
                 "Part2StartTime", 
                 "Part2EndTime"]].dtypes)
Part1StartTime    datetime64[ns]
Part1EndTime      datetime64[ns]
Part2StartDate            object
Part2StartTime            object
Part2EndTime              object
dtype: object
pandas로 빠르고 간편한 데이터 적재

날짜 파싱

# 파싱할 날짜 열 나열
date_cols = ["Part1StartTime", 
             "Part1EndTime",

[["Part2StartDate", "Part2StartTime"]]]
# 파일 로드: 표준 및 분리된 datetime 열 파싱 survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
print(survey_df.head(3))
  Part2StartDate_Part2StartTime   Age       ...    SchoolMajor  StudentDebtOwe
0           2016-03-29 21:24:57  28.0       ...            NaN           20000
1           2016-03-29 21:27:14  22.0       ...            NaN             NaN
2           2016-03-29 21:27:13  19.0       ...            NaN             NaN

[3 rows x 98 columns]
pandas로 빠르고 간편한 데이터 적재

날짜 파싱

# 파싱할 날짜 열 나열
date_cols = {"Part1Start": "Part1StartTime", 
             "Part1End": "Part1EndTime",
             "Part2Start": ["Part2StartDate", 
                             "Part2StartTime"]}


# 파일 로드: 표준 및 분리된 datetime 열 파싱 survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols) print(survey_df.Part2Start.head(3))
0   2016-03-29 21:24:57
1   2016-03-29 21:27:14
2   2016-03-29 21:27:13
Name: Part2Start, dtype: datetime64[ns]
pandas로 빠르고 간편한 데이터 적재

비표준 날짜

  • parse_dates는 비표준 datetime 형식에서는 작동하지 않습니다
  • parse_dates가 불가하면 로드 후 pd.to_datetime()을 사용합니다
  • to_datetime() 인수:
    • 변환할 데이터프레임과 열
    • format: datetime 형식의 문자열 표현
pandas로 빠르고 간편한 데이터 적재

Datetime 형식 지정

  • 코드와 문자로 datetime 문자열 형식을 지정합니다
  • 전체 목록은 strftime.org 참조
pandas로 빠르고 간편한 데이터 적재

Datetime 형식 지정

코드 의미 예시
%Y 연도(4자리) 1999
%m 월(0 패딩) 03
%d 일(0 패딩) 01
%H 시(24시간제) 21
%M 분(0 패딩) 09
%S 초(0 패딩) 05
pandas로 빠르고 간편한 데이터 적재

비표준 날짜 파싱

특이한 datetime 형식의 열이 강조된 날짜/시간 스프레드시트

format_string = "%m%d%Y %H:%M:%S"

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
pandas로 빠르고 간편한 데이터 적재

비표준 날짜 파싱

print(survey_df.Part2EndTime.head())
0   2016-03-29 21:27:25
1   2016-03-29 21:29:10
2   2016-03-29 21:28:21
3   2016-03-29 21:30:51
4   2016-03-29 21:31:54
Name: Part2EndTime, dtype: datetime64[ns]
pandas로 빠르고 간편한 데이터 적재

연습해 봅시다!

pandas로 빠르고 간편한 데이터 적재

Preparing Video For Download...