Модифікація імпорту: розбір дат

Оптимізоване завантаження даних із pandas

Amany Mahfouz

Instructor

Дані дати й часу

  • Дати й час мають власний тип даних і внутрішнє подання
  • Значення datetime можна перетворювати на рядки
  • Є спільний набір кодів для форматування рядків datetime
Оптимізоване завантаження даних із pandas

pandas і Datetimes

  • Стовпці datetime за замовчуванням завантажуються як обʼєкти (рядки)
  • Вкажіть, що стовпці — це datetime, аргументом parse_dates (не dtype!)
  • parse_dates приймає:
    • список назв або номерів стовпців для розбору
    • список, що містить списки стовпців для обʼєднання й розбору
    • словник, де ключі — нові назви стовпців, а значення — списки стовпців для спільного розбору
Оптимізоване завантаження даних із pandas

pandas і Datetimes

Електронна таблиця зі стовпцями дати й часу в різних форматах

Оптимізоване завантаження даних із pandas

pandas і Datetimes

Електронна таблиця з даними дати й часу; підсвічено стовпці у стандартному форматі

Оптимізоване завантаження даних із pandas

pandas і Datetimes

Електронна таблиця з даними дати й часу; підсвічено окремі стовпці лише з датою та лише з часом

Оптимізоване завантаження даних із pandas

pandas і Datetimes

Електронна таблиця з даними дати й часу; підсвічено стовпець із нестандартним форматом datetime

Оптимізоване завантаження даних із pandas

Розбір дат

# List columns of dates to parse
date_cols = ["Part1StartTime", "Part1EndTime"]

# Load file, parsing standard datetime columns survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
Оптимізоване завантаження даних із pandas

Розбір дат

# Check data types of timestamp columns
print(survey_df[["Part1StartTime", 
                 "Part1EndTime", 
                 "Part2StartDate", 
                 "Part2StartTime", 
                 "Part2EndTime"]].dtypes)
Part1StartTime    datetime64[ns]
Part1EndTime      datetime64[ns]
Part2StartDate            object
Part2StartTime            object
Part2EndTime              object
dtype: object
Оптимізоване завантаження даних із pandas

Розбір дат

# List columns of dates to parse
date_cols = ["Part1StartTime", 
             "Part1EndTime",

[["Part2StartDate", "Part2StartTime"]]]
# Load file, parsing standard and split datetime columns 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

Розбір дат

# List columns of dates to parse
date_cols = {"Part1Start": "Part1StartTime", 
             "Part1End": "Part1EndTime",
             "Part2Start": ["Part2StartDate", 
                             "Part2StartTime"]}


# Load file, parsing standard and split datetime columns 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():
    • DataFrame і стовпець для перетворення
    • format: рядкове подання формату datetime
Оптимізоване завантаження даних із pandas

Форматування datetime

  • Описуйте форматування рядків datetime кодами та символами
  • Повний перелік див. на strftime.org
Оптимізоване завантаження даних із pandas

Форматування datetime

Code Значення Приклад
%Y Рік (4 цифри) 1999
%m Місяць (з нулем попереду) 03
%d День (з нулем попереду) 01
%H Година (24-годинний формат) 21
%M Хвилина (з нулем попереду) 09
%S Секунда (з нулем попереду) 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...