最近在處理一份駕駛行為方面的數據,其中要用到時間戳,因此就在此與大家一同分享學習一下。
1.什么是時間戳?
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。通俗的講, 時間戳是一份能夠表示一份數據在一個特定時間點已經存在的完整的可驗證的數據。 它的提出主要是為用戶提供一份電子證據, 以證明用戶的某些數據的產生時間。 在實際應用上, 它可以使用在包括電子商務、 金融活動的各個方面, 尤其可以用來支撐公開密鑰基礎設施的 “不可否認” 服務。
2.普通日期與時間戳之間的轉換
2.1利用EXCEL
所要用到的公式如下:
A1=(B1-70*365-19)*86400-8*3600
其中B1表示正常日期時間格式,A1就是所需的時間戳格式,A1單元格屬性日期格式轉成常規格式就可以了。
實際操作如下:
如圖所示:時間所在列為第K列
現在我們新增一列第N列命名為unix ,並在其第二行鍵入公式:
點擊√,出現如下結果:
現在我們驗證我們的結果對不對,在網上在線轉換工具https://tool.lu/timestamp/進行測試,如下:
驗證發現我們用Excel公式計算出來的結果是正確的。我們將后面的都轉換,點擊小黑色+號,往下拉,則整列都可以轉換成日期戳格式,如下圖:
當然Excel需要拖動的體驗太不好了,於是嘗試用python看能不能處理。
2.2利用python
用python進行日期格式與時間戳的轉換需要用到pandas和time兩個包,具體代碼如下:
import pandas as pd import time data = pd.read_csv('C:\\Users\\L-Consen\\Downloads\\附件1-示例數據-100輛車\\AD00113.csv',header=0)#從某個存儲位置讀取文件 for i in range(0,len(data)): row= data.iloc[i]['location_time'] timeArray = time.strptime(row, "%Y-%m-%d %H:%M:%S")#將其轉換為時間數組 timeStamp = int(time.mktime(timeArray))#轉換為時間戳 print(timeStamp)
用到的時間數據和上面Excel的時間數據一樣,下圖是輸出的結果
可以看出,與Excel的結果是一樣的。證明這個處理是正確的。
3.總結
其實中途我還用了R語言來進行轉換,R代碼如下:
# 數據讀取 inputfile <- read.csv('./data1/AD00113.csv', header = TRUE) # 轉換成時間戳 loss <- as.numeric(as.POSIXct("(inputfile[,11])", format="%Y-%m-%d %H:/%M:/%S")) # 數據第一列為日期 # 保存結果 outputfile <- data.frame(inputfile, 'unix' = loss) # 變量重命名,存入數據
但是出現的結果卻是:
全都是NA,查了半天語法沒問題,也沒找到解決方法,只能再搜索資料看看哪里出了問題。
處理日期與時間戳的轉換基本上有這些工具,好像還有MySQL之類的也可以處理,不過沒去深究,因為Excel和python足夠了,后面需要的haul再去學習其他處理方式。
時間戳看似是一個小東西,但是只有將日期轉換成時間戳后,才能進行后續的一些缺失值的插值處理和計算加速度之類的操作。因此,這也是重要的一步。