การปรับแต่งการนำเข้าข้อมูล: การแปลงวันที่

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Amany Mahfouz

Instructor

ข้อมูลวันที่และเวลา

  • วันที่และเวลามีชนิดข้อมูลและการแทนค่าภายในเป็นของตัวเอง
  • ค่า datetime สามารถแปลงเป็น string ได้
  • มีชุดโค้ดมาตรฐานสำหรับอธิบายรูปแบบ string ของ datetime
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

pandas และ Datetime

  • คอลัมน์ datetime จะถูกโหลดเป็น object (string) โดยค่าเริ่มต้น
  • ระบุว่าคอลัมน์มีข้อมูล datetime ด้วยอาร์กิวเมนต์ parse_dates (ไม่ใช่ dtype!)
  • parse_dates รับค่าได้หลายรูปแบบ:
    • รายชื่อหรือหมายเลขคอลัมน์ที่ต้องการแปลง
    • รายการที่มีรายการย่อยของคอลัมน์ที่ต้องการรวมและแปลง
    • dictionary ที่ key คือชื่อคอลัมน์ใหม่ และ value คือรายการคอลัมน์ที่ต้องการแปลงร่วมกัน
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

pandas และ Datetime

สเปรดชีตแสดงคอลัมน์วันที่และเวลาในรูปแบบต่างๆ

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

pandas และ Datetime

สเปรดชีตแสดงข้อมูลวันที่และเวลา โดยเน้นคอลัมน์ที่มีรูปแบบมาตรฐาน

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

pandas และ Datetime

สเปรดชีตแสดงข้อมูลวันที่และเวลา โดยเน้นคอลัมน์ที่มีเฉพาะวันที่และคอลัมน์ที่มีเฉพาะเวลา

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

pandas และ Datetime

สเปรดชีตแสดงข้อมูลวันที่และเวลา โดยเน้นคอลัมน์ที่มีรูปแบบ 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 ที่ไม่เป็นมาตรฐาน
  • ใช้ pd.to_datetime() หลังจากโหลดข้อมูล หาก parse_dates ไม่สามารถใช้งานได้
  • อาร์กิวเมนต์ของ to_datetime():
    • DataFrame และคอลัมน์ที่ต้องการแปลง
    • format: string ที่แทนรูปแบบของ datetime
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

รูปแบบ Datetime

  • อธิบายรูปแบบ string ของ datetime ด้วยโค้ดและอักขระ
  • ดูรายการทั้งหมดได้ที่ strftime.org
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

รูปแบบ Datetime

โค้ด ความหมาย ตัวอย่าง
%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...