앎을 경계하기

[가짜연구소3기] Data Engineer

[가짜연구소 3기] 데이터 엔지니어링 31 - Modifying imports: parsing dates

양갱맨 2021. 9. 4. 21:12

 

주제

 


Date and Time Data

  • 일자와 시간은 파이썬 특수 유형인 datetime으로 저장한다는 것이다.
  • Datetime은 여러 문자열로 표현될 수 있다.
  • 날짜 시간이 문자열로 형식화되는 방법을 설명하는데 사용되는 공통 코드 세트이다.
  • 판다스에서는 기본으로 datetime 데이터를 object로 읽는다.
  • datetime 열을 지정하기 위해 parse_dates를 사용해서 datetime을 설정할 수 있다.
  • parse_dates
    • 컬럼 이름이나 숫자 목록을 전달한다.
    • 2차원 배열도 가능하다.
    • 각 키는 새 컬럼이름, 각 값은 구문 분석할 컬럼 목록으로 딕셔너리를 구성해서 사용할 수 있다.

위 데이터로 date를 다뤄보자.

    1. 표준 형식
      date_cols = ['Part1StartTime', 'Part1EndTime']
      
      survey_df = pd.read_excel("fcc_survey.xlsx",
      													parse_dates=date_cols)
      타입을 확인해보면 datetime64로 설정된것을 확인할 수 있다.
    1. 이중 배열로 넣기
      date_cols = ['Part1SatrtTime', 'Part1EndTime',
      						[['Part2StartDate', 'Part2StartTime']]]
      survey_df = pd.read_excel("fcc_survey.xlsx",
      													parse_dates=date_cols)
      head를 찍어보면 밑줄(_)로 연결되어 하나의 datetime 컬럼이 되는 것을 확인할 수 있다.
  1. 딕셔너리 형태로 넣기
    date_cols = {'Part1Start':'Part1StartTime',
    						'Part1End':'Part1EndTime',
    						'Part2Start':['Part2StartDate', 
    													'Part2StartTime']}
    
    survey_df = pd.read_excel("fcc_survey.xlsx",
    													parse_dates=date_cols)
  1. 분석 날짜가 비정상적인 형식인 경우
    • 형식이 옳지못한 경우 parse_dates를 사용했을 때 제대로 동작하지 않는다.
    • pd.to_datetime()을 사용해서 데이터로 변환하고 parse_dates를 사용해야한다.
    • to_datetime()을 사용하려면 데이터프레임과 열이 필요하다.

Datetime Formatting

날짜에 대한 형식은 코드와 문자열 형태로 설명된다.

자세한 내용은 strftime.org에서 확인할 수 있다.

위와 같이 파싱할 수 없는 형태의 데이터가 있다.

월일연도 시:분:초의 형태를 아래와 같이 "%m%d%Y %H:%M:%S"로 나타내고 이를 pd.to_datetime의 format 인수로 설정한다.

format_string = "%m%d%Y %H:%M:%S"
survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"],
														format=format_string)