pandas處理時間和日期類型數據

導入一個時間相關的數據集

import numpy as np
import pandas as pd

## importing a dataset
url="http://mlr.cs.umass.edu/ml/machine-learning-databases/event-detection/CalIt2.data"
data = pd.read_csv(url, header = None)

查看數據的屬性

>>> data.head(3)
   0         1         2  3
0  7  07/24/05  00:00:00  0
1  9  07/24/05  00:00:00  0
2  7  07/24/05  00:30:00  1

## 查看所有列的數據類型
>>> data.dtypes
0     int64
1    object
2    object
3     int64
dtype: object

可以看出來第1列和第2列包含時間時間序列數據,但卻是object類型,我們可以轉換成時間類型。

數據類型轉化(object → datetime)

>>> data[1] = pd.to_datetime(data[1])

>>> data[2] = pd.to_datetime(data[2])

>>> data.dtypes
0             int64
1    datetime64[ns]
2    datetime64[ns]
3             int64
dtype: object

查看datetime類型數據

  • 查看這個數據集中的時間數據中包含了哪些年、月、日等。
>>> data[1].dt.year.unique()
array([2005], dtype=int64)

>>> data[1].dt.month.unique()
array([ 7,  8,  9, 10, 11], dtype=int64)

>>> data[1].dt.day.unique()
array([24, 25, 26, 27, 28, 29, 30, 31,  1,  2,  3,  4,  5,  6,  7,  8,  9,
       10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], dtype=int64)
  • 查看某月的數據有多少
>>> data[data[1].dt.month == 10].shape
(2976, 4)
  • 查看兩個時間相差多久
>>> data.loc[6624,1] - data.loc[0,1]
Timedelta('69 days 00:00:00')

第1行和第6624行的數據相差69天,結果是個Timedelta數據類型。

參考:Working with Dates and timedelta in Pandas

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章