資料清洗之微博時間清洗

2022-02-21 22:20:15 字數 3714 閱讀 6146

資料清洗之微博時間清洗

爬取微博的時候時間格式比較亂,存到資料庫要統一成datatime型別,所以需要用到對時間的轉換

這裡是對time模組和datetime的模組的使用。

對於當天的有三種:

40秒前

50分鐘前

今天 08:12

針對這三種,第一步要做的是獲取當前的年月日

import datetime

now = datetime.datetime.now()

ymd = now.strftime("%y-%m-%d")

#或者#datetime.day,datetime.month,datetime.year 分別表示乙個datetime物件的日,月,年

解釋

第一行我們匯入datetime模組

第二行獲取當前的時間,datetime型別:

```2018-07-20 09:28:19.080791

```包含年月日和時分秒

第三行,strftime函式是格式化字元裡面的引數是乙個輸出的字串格式:

比如這裡 的%y代表四個數字表示的年份(%y是二位的),%m是表示月份,%d返回的是當前時間是當前月的第幾天,其他的格式看下面的圖有詳細的解釋。

!(接上我們分析第乙個,

40秒前

第一步:獲取當前的時間

上面已經獲取now了。

第二步:減去40s

時間上的加減我們使用datetime的timedalte屬性,

timedalte 是datetime中的乙個物件,該物件表示兩個時間的差值。

timedalte 的建構函式如下:

def __init__(self, days: float = ..., seconds: float = ..., microseconds: float = ...,

milliseconds: float = ..., minutes: float = ..., hours: float = ...,

weeks: float = ...) -> none: ...

於是就有了下面的結果

newdate = now - datetime.timedelta(minutes=int(seconds[:-2]))
同理

50分鐘前

newdate = now - datetime.timedelta(minutes=int(newstr[:-3]))
然後說最後另一種:

今天 08:12

第一步:補齊年月日

第二步:使用time模組的strptime() 函式根據指定的格式把乙個時間字串解析為時間元組,

語法strptime()方法語法:

time.strptime(string[, format])

引數string -- 時間字串。

format -- 格式化字串。

返回值返回struct_time物件。

日期格式化符號:

%y 兩位數的年份表示(00-99)

%y 四位數的年份表示(000-9999)

%m 月份(01-12)

%d 月內中的一天(0-31)

%h 24小時制小時數(0-23)

%i 12小時制小時數(01-12)

%m 分鐘數(00=59)

%s 秒(00-59)

%a 本地簡化星期名稱

%a 本地完整星期名稱

%b 本地簡化的月份名稱

%b 本地完整的月份名稱

%c 本地相應的日期表示和時間表示

%j 年內的一天(001-366)

%p 本地a.m.或p.m.的等價符

%u 一年中的星期數(00-53)星期天為星期的開始

%w 星期(0-6),星期天為星期的開始

%w 一年中的星期數(00-53)星期一為星期的開始

%x 本地相應的日期表示

%x 本地相應的時間表示

%z 當前時區的名稱

%% %號本身

第三步:time.mktime轉換成時間戳

第四步:使用datetime的fromtimestamp模組,把時間戳轉換為

mdate = time.mktime(time.strptime(ymd + newstr, '%y-%m-%d今天 %h:%m'))

newdate = datetime.datetime.fromtimestamp(mdate)

其他的處理思路就一樣了,下面**給出目前遇到的格式:

def get_format_datetime(self,datestr):

now = datetime.datetime.now()

ymd = now.strftime("%y-%m-%d")

y = now.strftime("%y")

newstr = datestr

newdate = now

if u"樓" in datestr:

newstr = datestr.split(u"樓")[-1].strip()

if (u"今天" in newstr):

mdate = time.mktime(time.strptime(ymd + newstr, '%y-%m-%d今天 %h:%m'))

newdate = datetime.datetime.fromtimestamp(mdate)

elif (u"月" in newstr):

mdate = time.mktime(time.strptime(y + newstr, '%y%m月%d日 %h:%m'))

newdate = datetime.datetime.fromtimestamp(mdate)

elif (u"分鐘前" in newstr):

newdate = now - datetime.timedelta(minutes=int(newstr[:-3]))

elif (u"秒前" in newstr):

newdate = now - datetime.timedelta(minutes=int(newstr[:-2]))

#以下為手機端

elif "-" in newstr:

mdate = time.mktime(time.strptime(y+"-"+ newstr, '%y-%m-%d'))

newdate = datetime.datetime.fromtimestamp(mdate)

elif (u"昨天" in newstr):

mdate = time.mktime(time.strptime(ymd + newstr, '%y-%m-%d昨天 %h:%m'))

newdate = datetime.datetime.fromtimestamp(mdate)-datetime.timedelta(days=1)

elif (u"小時前" in newstr):

newdate = now - datetime.timedelta(hours=int(newstr[:-3]))

else:

newdate = datetime.datetime.strptime(newstr, "%y-%m-%d %h:%m")

return newdate

python日期資料清洗 資料清洗之微博時間清洗

資料清洗之微博時間清洗 爬取微博的時候時間格式比較亂,存到資料庫要統一成datatime型別,所以需要用到對時間的轉換 這裡是對time模組和datetime的模組的使用。對於當天的有三種 40秒前 50分鐘前 今天 08 12 針對這三種,第一步要做的是獲取當前的年月日 import dateti...

資料清洗之資料清洗概述

從廣泛的意義上來講,資料是乙個寬泛的概念,包括但不限於 我們要了解資料清洗,就需理解資料的內涵和外延 常見的資料有 其中,比較重要比較常見的分析資料是 資料。這裡重點介紹一些關於 資料的內容。資料 資料物件由屬性 attributes 及其值 value 構成 資料的特徵 什麼是資料清洗 資料清洗是...

excel資料清洗 資料清洗excel

資料清洗與加工 目的 獲得具備準確性 完整性和一致性符合分析質量的資料。資料處理第一步 資料清洗 1 資料去重 方式1 刪除重複項功能。適用於有重複項出現的列,並且這樣的重複無意義,比如標識列。操作 資料 選項卡下的 刪除重複值 按鈕 方式2 排序刪除重複項。適用於需要人工判斷無用重複項的資料,即將...