การใช้งานวันที่และเวลาใน pandas

การจัดการข้อมูล Time Series ใน Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

ฟังก์ชันการทำงานของ Date & Time Series

  • พื้นฐาน: ชนิดข้อมูลสำหรับวันที่และเวลา
    • อ็อบเจกต์สำหรับจุดในเวลาและช่วงเวลา
    • แอตทริบิวต์และเมธอดสะท้อนรายละเอียดที่เกี่ยวกับเวลา
  • ลำดับของวันที่และช่วงเวลา:
    • Series หรือคอลัมน์ใน DataFrame
    • Index: แปลงอ็อบเจกต์ให้เป็น Time Series
  • เมธอดหลายตัวของ Series/DataFrame ต้องอาศัยข้อมูลเวลาใน index เพื่อใช้งานฟังก์ชัน time-series
การจัดการข้อมูล Time Series ใน Python

บล็อกพื้นฐาน: pd.Timestamp

import pandas as pd  # assumed imported going forward
from datetime import datetime  # To manually create dates

time_stamp = pd.Timestamp(datetime(2017, 1, 1))
pd.Timestamp('2017-01-01') == time_stamp
True # Understands dates as strings
time_stamp # type: pandas.tslib.Timestamp
Timestamp('2017-01-01 00:00:00')
การจัดการข้อมูล Time Series ใน Python

บล็อกพื้นฐาน: pd.Timestamp

  • อ็อบเจกต์ Timestamp มีแอตทริบิวต์หลายตัวสำหรับเก็บข้อมูลเวลา
time_stamp.year
2017
time_stamp.day_name()
'Sunday'
การจัดการข้อมูล Time Series ใน Python

บล็อกเพิ่มเติม: pd.Period & freq

period = pd.Period('2017-01')

period # default: month-end
Period('2017-01', 'M')
period.asfreq('D') # convert to daily
Period('2017-01-31', 'D')
period.to_timestamp().to_period('M')
Period('2017-01', 'M')

 

  • อ็อบเจกต์ Period มีแอตทริบิวต์ freq สำหรับเก็บข้อมูลความถี่

 

  • แปลง pd.Period() เป็น pd.Timestamp() และกลับคืนได้
การจัดการข้อมูล Time Series ใน Python

บล็อกเพิ่มเติม: pd.Period & freq

period + 2
Period('2017-03', 'M')
pd.Timestamp('2017-01-31', 'M') + 1
Timestamp('2017-02-28 00:00:00', freq='M')
  • ข้อมูลความถี่ช่วยให้คำนวณวันที่ขั้นพื้นฐานได้
การจัดการข้อมูล Time Series ใน Python

ลำดับของวันที่และเวลา

  • pd.date_range: start, end, periods, freq
index = pd.date_range(start='2017-1-1', periods=12, freq='M')
index
DatetimeIndex(['2017-01-31', '2017-02-28', '2017-03-31', ...,
               '2017-09-30', '2017-10-31', '2017-11-30', '2017-12-31'],
              dtype='datetime64[ns]', freq='M')
  • pd.DateTimeIndex: ลำดับของอ็อบเจกต์ Timestamp พร้อมข้อมูลความถี่
การจัดการข้อมูล Time Series ใน Python

ลำดับของวันที่และเวลา

index[0]
Timestamp('2017-01-31 00:00:00', freq='M')
index.to_period()
PeriodIndex(['2017-01', '2017-02', '2017-03', '2017-04', ..., 
             '2017-11', '2017-12'], dtype='period[M]', freq='M')
การจัดการข้อมูล Time Series ใน Python

สร้าง Time Series: pd.DateTimeIndex

pd.DataFrame({'data': index}).info()
RangeIndex: 12 entries, 0 to 11
Data columns (total 1 columns):
data    12 non-null datetime64[ns]
dtypes: datetime64[ns](1)
การจัดการข้อมูล Time Series ใน Python

สร้าง Time Series: pd.DateTimeIndex

  • np.random.random:
    • ตัวเลขสุ่ม: [0,1]
    • 12 แถว, 2 คอลัมน์
data = np.random.random((size=12,2))

pd.DataFrame(data=data, index=index).info()
DatetimeIndex: 12 entries, 2017-01-31 to 2017-12-31
Freq: M
Data columns (total 2 columns):
0    12 non-null float64
1    12 non-null float64
dtypes: float64(2)
การจัดการข้อมูล Time Series ใน Python

Frequency Aliases และข้อมูลเวลา

ch1_1_v2 -How to use Dates & Times with pandas.036.png

การจัดการข้อมูล Time Series ใน Python

มาฝึกกันเถอะ!

การจัดการข้อมูล Time Series ใน Python

Preparing Video For Download...