Điều chỉnh nhập: phân tích ngày giờ

Nạp dữ liệu gọn nhẹ với pandas

Amany Mahfouz

Instructor

Dữ liệu ngày và giờ

  • Ngày và giờ có kiểu dữ liệu và biểu diễn nội bộ riêng
  • Giá trị datetime có thể chuyển thành chuỗi
  • Bộ mã chung mô tả định dạng chuỗi datetime
Nạp dữ liệu gọn nhẹ với pandas

pandas và Datetime

  • Mặc định cột datetime được tải thành object (chuỗi)
  • Chỉ định cột là datetime với đối số parse_dates (không phải dtype!)
  • parse_dates chấp nhận:
    • danh sách tên hoặc số cột để phân tích
    • danh sách chứa các danh sách cột để ghép và phân tích
    • từ điển: khóa là tên cột mới, giá trị là danh sách cột cần ghép và phân tích cùng nhau
Nạp dữ liệu gọn nhẹ với pandas

pandas và Datetime

Bảng tính các cột ngày giờ với nhiều định dạng khác nhau

Nạp dữ liệu gọn nhẹ với pandas

pandas và Datetime

Bảng tính dữ liệu ngày giờ với các cột định dạng chuẩn được tô sáng

Nạp dữ liệu gọn nhẹ với pandas

pandas và Datetime

Bảng tính dữ liệu ngày giờ, tô sáng một cột chỉ ngày và một cột chỉ giờ

Nạp dữ liệu gọn nhẹ với pandas

pandas và Datetime

Bảng tính dữ liệu ngày giờ, tô sáng cột có định dạng datetime khác thường

Nạp dữ liệu gọn nhẹ với pandas

Phân tích ngày giờ

# Liệt kê các cột ngày cần phân tích
date_cols = ["Part1StartTime", "Part1EndTime"]

# Tải tệp, phân tích các cột datetime chuẩn survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
Nạp dữ liệu gọn nhẹ với pandas

Phân tích ngày giờ

# Kiểm tra kiểu dữ liệu của các cột timestamp
print(survey_df[["Part1StartTime", 
                 "Part1EndTime", 
                 "Part2StartDate", 
                 "Part2StartTime", 
                 "Part2EndTime"]].dtypes)
Part1StartTime    datetime64[ns]
Part1EndTime      datetime64[ns]
Part2StartDate            object
Part2StartTime            object
Part2EndTime              object
dtype: object
Nạp dữ liệu gọn nhẹ với pandas

Phân tích ngày giờ

# Liệt kê các cột ngày cần phân tích
date_cols = ["Part1StartTime", 
             "Part1EndTime",

[["Part2StartDate", "Part2StartTime"]]]
# Tải tệp, phân tích cả cột datetime chuẩn và cột tách rời 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]
Nạp dữ liệu gọn nhẹ với pandas

Phân tích ngày giờ

# Liệt kê các cột ngày cần phân tích
date_cols = {"Part1Start": "Part1StartTime", 
             "Part1End": "Part1EndTime",
             "Part2Start": ["Part2StartDate", 
                             "Part2StartTime"]}


# Tải tệp, phân tích cả cột datetime chuẩn và cột tách rời 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]
Nạp dữ liệu gọn nhẹ với pandas

Ngày không chuẩn

  • parse_dates không hoạt động với định dạng datetime không chuẩn
  • Dùng pd.to_datetime() sau khi tải dữ liệu nếu parse_dates không dùng được
  • Tham số của to_datetime():
    • DataFrame và cột cần chuyển
    • format: chuỗi mô tả định dạng datetime
Nạp dữ liệu gọn nhẹ với pandas

Định dạng datetime

  • Mô tả định dạng chuỗi datetime bằng mã và ký tự
  • Tham khảo strftime.org để xem đầy đủ danh sách
Nạp dữ liệu gọn nhẹ với pandas

Định dạng datetime

Ý nghĩa Ví dụ
%Y Năm (4 chữ số) 1999
%m Tháng (có số 0 ở đầu) 03
%d Ngày (có số 0 ở đầu) 01
%H Giờ (24h) 21
%M Phút (có số 0 ở đầu) 09
%S Giây (có số 0 ở đầu) 05
Nạp dữ liệu gọn nhẹ với pandas

Phân tích ngày không chuẩn

Bảng tính dữ liệu ngày giờ, tô sáng cột có định dạng datetime khác thường

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

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
Nạp dữ liệu gọn nhẹ với pandas

Phân tích ngày không chuẩn

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]
Nạp dữ liệu gọn nhẹ với pandas

Vamos praticar!

Nạp dữ liệu gọn nhẹ với pandas

Preparing Video For Download...