Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Xử lý thời gian với Pandas DataFrame

Trong bài viết này, chúng ta sẽ tìm hiểu về tạo & xử lý các timestamp khác nhau sử dụng thư viện pandas tích hợp sẵn. Chúng ta cũng dùng module numpy để tạo và sửa đổi database cần thiết cho việc tạo timestamp.

IDE ưu tiên: Jupyter notebook

Trước khi bắt đầu hướng dẫn này, chúng ta phải cài đặt thư viện pandas và numpy. Jupyter notebook là nơi tốt nhất để test và chạy code. Để cài pandas, chúng ta phải chạy lệnh sau:

>>> pip install pandas

Nếu chạy lệnh này, tất cả dependency được cài tự động. Sau khi xong, chúng ta phải restart kernel để thấy thay đổi.

Sau khi cài xong tất cả dependency, chúng ta có thể import pandas as 'p'.

Ở đây chúng ta gọi constructor DataFrame và khởi tạo database với period 4 và frequency 2 hrs từ đối số date. Bằng cách chỉ định key 'time', chúng ta hiển thị database.

>>> pip install pandas
>>> import pandas as p
>>> data_struct = p.DataFrame()
>>> data_struct['time'] = p.date_range('14/7/2019', periods=4, freq='3H')
>>> print(data_struct['time'])
0 2019-07-14 00:00:00
1 2019-07-14 03:00:00
2 2019-07-14 06:00:00
3 2019-07-14 09:00:00
Name: time, dtype: datetime64[ns]

Bằng cách dùng <data_struct>.dt.<tên feature>, các đặc trưng được trích xuất. Bằng cách dùng phương thức head(), chúng ta hiển thị tất cả hàng từ database.

>>> data_struct['year'] = data_struct['time'].dt.year
>>> data_struct.head(4)
    time                        year
0 2019-07-14 00:00:00           2019
1 2019-07-14 03:00:00           2019
2 2019-07-14 06:00:00           2019
3 2019-07-14 09:00:00           2019

Ở đây chúng ta triển khai hàm .array() có trong module numpy để tạo chuỗi thời gian. Các chuỗi này được chuyển đổi thành DateTime bằng phương thức .to_datetime() trong thư viện pandas.

>>> import numpy as n
>>> dt_timestring = n.array(['14-07-2019 07:26 AM', '13-07-2019 11:01 PM'])
>>> timestamps = [p.to_datetime(date, format="%d-%m-%Y %I:%M %p", errors="coerce") for date in dt_timestring]
>>> print(timestamps)
[Timestamp('2019-07-14 07:26:00'), Timestamp('2019-07-13 23:01:00')]

Ở đây chúng ta đang indexing database với date, nghĩa là trường 'date' sẽ được hiển thị trước bằng phương thức .set_index().

>>> data_struct1 = p.DataFrame()
>>> data_struct1['date'] = p.date_range('18/07/2019', periods=5, freq='2H')
>>> data_struct1 = data_struct1.set_index(data_struct1['date'])
>>> print(data_struct1.head(5))
                     date
date
2019-07-18 00:00:00  2019-07-18 00:00:00
2019-07-18 02:00:00  2019-07-18 02:00:00
2019-07-18 04:00:00  2019-07-18 04:00:00
2019-07-18 06:00:00  2019-07-18 06:00:00
2019-07-18 08:00:00  2019-07-18 08:00:00

Nếu chúng ta muốn hiển thị chỉ một dataset cụ thể từ database, chúng ta có thể triển khai các lệnh như thảo luận dưới đây:

>>> data_struct2 = p.DataFrame()
>>> data_struct2['date'] = p.date_range('17/07/2019', periods=3, freq='4H')
>>> print(data_struct2.head(5))
    date
0 2019-07-17 00:00:00
1 2019-07-17 04:00:00
2 2019-07-17 08:00:00
>>> inp = data_struct2[(data_struct2['date'] > '2019-07-17 04:00:00')]
>>> print(inp)
    date
2 2019-07-17 08:00:00

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về cách tạo và xử lý timestamp với Pandas DataFrame và NumPy.