欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的Pandas?時間函數(shù)?time?、datetime?模塊和時間處理基礎(chǔ)講解

 更新時間:2023年03月23日 09:59:40   作者:虛心求知的熊  
Python?中提供了對時間日期的多種多樣的處理方式,主要是在?time?和?datetime?這兩個模塊里,這篇文章主要介紹了Python中的Pandas?時間函數(shù)?time?、datetime?模塊和時間處理基礎(chǔ),需要的朋友可以參考下

Python 中提供了對時間日期的多種多樣的處理方式,主要是在 time 和 datetime 這兩個模塊里。

一、time 模塊

  • time 模塊不牽扯時區(qū)的問題,便于計算。
  • (1) timestamp 時間戳,時間戳表示的是從 1970 年 1 月 1 日 00:00:00 開始按秒計算的偏移量。
  • (2) struct_time 時間元組,共有九個元素組。
  • (3) format time 格式化時間,已格式化的結(jié)構(gòu)使時間更具可讀性。包括自定義格式和固定格式。

1、時間格式轉(zhuǎn)換圖

在這里插入圖片描述

  • 主要 time 生成方法和 time 格式轉(zhuǎn)換方法實例如下:
  • 首先,我們導(dǎo)入 time 模塊,便于我們后續(xù)的操作。
import time

然后,我們生成 timestamp ,他是一個浮點型數(shù)據(jù)。

time.time()
#1676978808.2162082

將其轉(zhuǎn)化為整型數(shù)據(jù)。

int(time.time())
#1676978809 

我們可以知道一個程序消耗的時間,通過設(shè)置程序開始時間和程序結(jié)束時間,中間執(zhí)行一個循環(huán)語句,這里以累加到 10000 為例。

start_time = time.time() 
s = "" 
for i in range(10000):     
s += str(i) ? 
end_time = time.time() ? 
print("程序消耗時間=",end_time-start_time) 
#程序消耗時間= 0.0039615631103515625 

我們也可以通過 time 模塊調(diào)用本地時間,通過生成 struct_time 完成。

my_time = time.localtime() 
print(my_time) ? 
print(my_time.tm_year) 
print(my_time.tm_mon) 
print(my_time.tm_mday) 
#time.struct_time(tm_year=2023, tm_mon=2, tm_mday=21, tm_hour=19, tm_min=26, tm_sec=58, #tm_wday=1, tm_yday=52, tm_isdst=0) 
#2023 
#2 
#21 

我們可以將 timsstamp 轉(zhuǎn)化為 struct_time。

time.localtime(1650177058) 
#time.struct_time(tm_year=2022, tm_mon=4, tm_mday=17, tm_hour=14, tm_min=30, tm_sec=58, #tm_wday=6, tm_yday=107, tm_isdst=0) 

可以將格式化字符串輸入到 struct_time。

time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X') 
#time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, #tm_wday=3, tm_yday=125, tm_isdst=-1) 

我們也可以將格式化字符串時間反向轉(zhuǎn)變?yōu)槊腌姅?shù)。

time.mktime(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')) 
#1304584626.0 
  • 我們可以生成 format_time,產(chǎn)生滿足我們格式要求的時間。
  • 示例 1:
#struct_time to format_time time.strftime("%Y-%m-%d %X") 
time.strftime("%Y-%m-%d %X",time.localtime()) 
#time.strftime("%Y-%m-%d %X",time.localtime())
#'2023-02-21 19:27:05' #生成format_time 

示例 2:

#struct_time to format_time 
time.strftime("%Y-%m-%d") 
#time.strftime("%Y-%m-%d %X",time.localtime())
#'2023-02-21'

示例 3:

#struct_time to format_time 
time.strftime("%m-%d-%Y") 
#time.strftime("%Y-%m-%d %X",time.localtime())
#'02-21-2023'

2. struct_time 元組元素結(jié)構(gòu)

其具體元素結(jié)構(gòu)可見下述表格。

屬性
tm_year(年)xxxx 年,比如 2011
tm_mon(月)1 - 12
tm_mday(日)1 - 31
tm_hour(時)0 - 23
tm_min(分)0 - 59
tm_sec(秒)0 - 61
tm_wday(weekday)0 - 6(0表示周日)
tm_yday(一年中的第幾天)1 - 366
tm_isdst(是否是夏令時)默認(rèn)為-1
  • 其具體如下作用:
  • (1) 取得時間戳/時間格式的字符串中對應(yīng)的年/月/日等信息。
  • (2) 作為時間戳和字符串時間之間的橋梁。
  • 具體可見如下示例:
time_stuct = time.strptime('2011-05-07 16:37:06', '%Y-%m-%d %X') 
print(time_stuct.tm_year) 
print(time_stuct.tm_mon) 
print(time_stuct.tm_mday) 
print(time_stuct.tm_hour) 
print(time_stuct.tm_min) 
my = 'aaa' 
'%s'% my 
my_int = 1 
'%d'% my_int  
"我們在{}工作".format('家里') 
addr = "家里"  
f"我們在{addr}工作"
#2011 
#5 
#7 
#16 
#37 
#'我們在家里工作'

3. format time 結(jié)構(gòu)化表示

其具體含義可見下述表格。

屬性含義
%Y -年[0001,…,2018,2019,…,9999]
%m -月[01,02,…,11,12]
%d -天[01,02,…,30,31]
%M -分鐘[00,01,…,58,59]
%S -秒[00,01,…,58,61]
%X本地相應(yīng)時間
%y去掉世紀(jì)的年份(00 - 99)
  • 常見的結(jié)構(gòu)化時間組合有如下幾種:
  • 示例 1:
time.strftime("%Y-%m-%d %X")
#'2023-02-21 20:55:40'

time.strftime("%Y-%m-%d %X")
#'2023-02-21 20:55:40'

示例 2:

time.strftime("%Y-%m-%d")
#'2023-02-21'

示例 3:

time.strftime("%m")
#'02'

我們可以通過 time 運算獲取我們想要的時間點,并按 %Y-%m-%d %X 的形式表達出來。

import time 
t1 = time.time() 
t2=t1+24*60*60  
time.strftime("%Y-%m-%d %X",time.localtime(t2))
#'2023-02-22 21:02:38'

或者通過 time 進行暫停操作,例如火箭發(fā)射,我們在循環(huán)結(jié)束后暫停 1s,然后進行下一個語句。

# 倒計時 
for i in range(5):
     print('\r',' %s 秒!' % (5-i), end='')
     # 暫停1s后運行     
     time.sleep(1) 
print('\r',"發(fā)射!!!!")
#發(fā)射!!!!

二、datetime 模塊

datatime 模塊重新封裝了time模塊,提供更多接口,提供的類有:date,time,datetime、timedelta,tzinfo 等。

1. date類

其語法模板如下:

datetime.date(year, month, day)
  • 有靜態(tài)方法和字段兩種方法。
  • date.today():返回一個表示當(dāng)前本地日期的date對象。
  • date.fromtimestamp(timestamp):根據(jù)給定的時間戮,返回一個date對象。
  • 具體可見如下示例:
  • 示例 1:
from datetime import date 
import time 
print('date.today():', date.today()) 
print('date.fromtimestamp():', date.fromtimestamp(time.time()))
#date.today(): 2023-02-21 
#date.fromtimestamp(): 2023-02-21

示例 2:

from datetime import date 
print(type(date.fromtimestamp(1650177058))) 
print(date.fromtimestamp(1650177058))
#<class 'datetime.date'> 
#2022-04-17

2. 方法和屬性

  • 可以通過 d1 = date(2011,06,03) 生成 date 對象 。
  • 其具體含義可見下述表格。
屬性含義
d1.year
d1.month
d.day
d1.replace(year, month, day)生成一個新的日期對象,用參數(shù)指定的年,月,日代替原有對象中的屬性。(原有對象仍保持不變)
d1.timetuple()返回日期對應(yīng)的time.struct_time對象
d1.weekday()返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此類推
d1.isoweekday()返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此類推
d1.isoformat()返回格式如’YYYY-MM-DD’的字符串
d1.strftime(fmt)和 time 模塊 forma t相同
  • 具體可見如下示例:
  • 示例 1:我們將 day 參數(shù)指定為 1。
now = date.today() 
now 
print(now.replace(day=1))
#2023-02-01

示例 2:同示例 1,但是換了一種函數(shù)寫法。

date.today().replace(day=1)
#datetime.date(2023, 2, 1)

示例 3:直接使用 now 函數(shù)生成當(dāng)前日期。

now 
#datetime.date(2023, 2, 21)

示例 4:直接使用 now.isoformat() 函數(shù)生成 YYYY-MM-DD 格式的當(dāng)前日期。

now.isoformat() 
#'2023-02-21'

示例 5:直接使用 now.isoweekday() 函數(shù)生成周幾,返回對應(yīng)的數(shù)字。

now.isoweekday() 
#2 

示例 6:使用 now.strftime() 函數(shù)自定義輸出格式。

#'2022.04.18'  自定義輸出格式 
now.strftime('%Y.%m.%d') 
#'2023.02.21'

示例 7:

now = date(2021, 10, 26) 
print(now.year,now.month,now.day) 
tomorrow = now.replace(day = 1) 
print('now:', now, ', 當(dāng)月第一天:', tomorrow) 
print('timetuple():', now.timetuple())  
print('weekday():', now.weekday()) 
print('isoweekday():', now.isoweekday()) 
print('isoformat():', now.isoformat()) 
print('strftime():', now.strftime("%Y.%m.%d")) 
#2021 10 26 
#now: 2021-10-26 , 當(dāng)月第一天: 2021-10-01 
#timetuple(): time.struct_time(tm_year=2021, tm_mon=10, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=299, tm_isdst=-1) 
#weekday(): 1 
#isoweekday(): 2 
#isoformat(): 2021-10-26 
#strftime(): 2021.10.26

3. datetime 類

  • datetime 相當(dāng)于 date 和 time 結(jié)合起來。
  • 其語法模板如下:
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
  • datetime.today():返回一個表示當(dāng)前本地時間的 datetime 對象。
  • datetime.now([tz]):返回一個表示當(dāng)前本地時間的 datetime 對象,如果提供了參數(shù) tz,則獲取 tz 參數(shù)所指時區(qū)的本地時間。
  • datetime.fromtimestamp(timestamp[, tz]):根據(jù)時間戮創(chuàng)建一個 datetime 對象,參數(shù) tz 指定時區(qū)信息。
  • datetime.strptime(date_string, format):將格式字符串轉(zhuǎn)換為 datetime 對象。
  • 我們可以將 datetime 轉(zhuǎn)化為指定格式的字符串。
from  datetime import datetime 
now = datetime.now() 
print(type(now))
print(now.strftime('%Y-%m-%d %X'))
print(now.strftime('%Y-%m-%d %H:%M'))
#<class 'datetime.datetime'> 
#2023-02-21 21:45:25 
#2023-02-21 21:45
  • 對于 2021-11-25 10:23 這類的字符串,我們可以使用 strptime 將其轉(zhuǎn)化為 datetime。
  • 需要注意的是,將字符串轉(zhuǎn)化為 datetime 數(shù)據(jù)類型,格式需要統(tǒng)一。
my_str = '2021-11-10 10:23' 
print(datetime.strptime(my_str,'%Y-%m-%d %H:%M'))
my_str = '10/11/2021 10:23' 
datetime.strptime(my_str,'%d/%m/%Y %H:%M')
#2021-11-10 10:23:00 
#datetime.datetime(2021, 11, 10, 10, 23)

匯總一下,見下方例子。

from  datetime import * 
import time 
now = datetime.now() 
print('today():', datetime.today()) 
print('now():', datetime.now()) 
print('fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time()))    
print('datetime.strptime(date_string, format):',datetime.strptime('2022-03-21', "%Y-%m-%d"))  
#today(): 2023-02-21 21:45:28.141748 
#now(): 2023-02-21 21:45:28.141748 
#fromtimestamp(tmstmp): 2023-02-21 21:45:28.141748 
#datetime.strptime(date_string, format): 2022-03-21 00:00:00

三、timedelta 類的時間加減

  • 使用 timedelta 可以很方便的在日期上做天 days,小時 hour,分鐘 minute,秒 second,毫秒 millisecond,微秒 microsecond 的時間計算,如果要計算月份則需要另外的辦法。
  • 具體可見如下示例。
  • 示例 1(加上 -1 和減 1 是相同的):
from  datetime import datetime 
from  datetime import timedelta 
dt = datetime.now() 
#日期減一天 
dt_1 = dt + timedelta(days=-1)   #昨天  
dt_11 = dt - timedelta(days=1)   #昨天  
dt3 = dt + timedelta(days=1)   #明天  
print("dt3:",dt_1)  
print("dt_11:",dt_11)  
print("dt3:",dt3)
#dt3: 2023-02-20 22:11:28.388926 
#dt_11: 2023-02-20 22:11:28.388926 
#dt3: 2023-02-22 22:11:28.388926

示例 2(可以使用 s.total_seconds 返回在該時間實例的給定持續(xù)時間內(nèi)覆蓋的總秒數(shù) ):

# 明天的datetime  - 昨天的datetime 
s= dt3 - dt_1 
print(s.days) 
print(s.total_seconds())
#2 
#172800.0

示例 3:

delta_obj = dt3-dt 
print(type(delta_obj),delta_obj)#<type 'datetime.timedelta'> 1 day, 0:00:00 
# total_seconds():返回在該時間實例的給定持續(xù)時間內(nèi)覆蓋的總秒數(shù) 
print(delta_obj.days ,delta_obj.total_seconds())#1 86400.0
#<class 'datetime.timedelta'> 1 day, 0:00:00 
#1 86400.0

四、時間處理基礎(chǔ)

  • Pandas 提供了四種類型的生成日期時間的對象:日期時間、時間增量、時間跨度、日期偏移量。
  • (1) 日期時間(Date Times):具有時區(qū)支持的特定日期和時間。與 Python 標(biāo)準(zhǔn)庫中的 datetime.datetime 類似。如 2020 年 12 月 6 日 13 點 37 分 50 秒.
  • (2) 時間增量(Time Deltas):絕對持續(xù)時間,用于在指定時間點基礎(chǔ)上增加指定的增量,如在某年月日的基礎(chǔ)上增加 2 天、增加 2 個月、減少 4 小時等,最后產(chǎn)生一個新的時間點。
  • (3) 時間跨度(Time Span):由時間點及其相關(guān)周期定義的時間跨度,如連續(xù)產(chǎn)生一年四個季度的時間序列。
  • (4) 日期偏移(Date Offsets):以日歷計算的相對持續(xù)時間,表示時間間隔,兩個時間點之間的長度,如日、周、月、季度、年。
概念標(biāo)量類數(shù)組類Pandas 數(shù)據(jù)類型主要建立方法
日期時間(Date Times)Timesstamp 時間戳DatetimeIndex 時間索引datetime64[ns]、datetime64[ns,tz]to datetime()、date_range()
時間增量(Time Deltas)Timedelta 時間增量Timedeltalndex 時間增量索引timedelta[ns]to timedelta()、timedelta range()
時間跨度(Time Span&#x#xff09;Period 時間周期PeriodIndex 周期索引period[freq]Period()、period_range()
日期偏移(Date Offsets)DateOffsetNoneNoneDateOffset()
  • 一般情況下,時間序列主要是 Series 或 DataFrame 的時間型索引,可以用時間元素進行操控。

到此這篇關(guān)于Python中的Pandas 時間函數(shù) time 、datetime 模塊和時間處理基礎(chǔ)的文章就介紹到這了,更多相關(guān)Python Pandas 時間函數(shù) time內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論