導入一個時間相關的數據集
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數據類型。