python獲取前一天
A. python根據時間戳獲取時分秒
時間戳可簡單理解為自1970/01/01/ 00:00:00 到現在經過的秒數,如果要計算日期運算,因為涉及到潤年,一般使用語言自帶的庫實現比較簡單和高效。但如果只是取時間即時分秒,完全可以不用依賴庫,通過模運算和取整運算的方式實現,並且性能比內部庫函數效率更高。
運行結果,100萬次
1000萬次
性能快了接近200%,如果有涉及到大數據分析場景,百萬甚至千萬級別次的調用時,該演算法還是有意義的
B. 一道Python實驗題,求大神幫幫忙,在線等,挺急的,謝謝了。
代碼如下:
import sys
hit_except = False
try:
f = open('123.txt')
while True:
line = f.readline()
print(line,end='')
if not line:
break
except:
hit_except = True
print(f"異常:{sys.exc_info()[0]}")
else:
pass
finally:
if not hit_except:
f.close()
C. python怎樣獲取字典中前十個
字典為mydict={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11}
#列印字典的所有鍵值
print(mydict.keys())
#列印字典的所有值
print(mydict.values())
#列印字典的前5個鍵值
print([i for i in mydict.keys()][:5])
#列印字典的前8個值
print([i for i in mydict.values()][:8])
D. Python獲取當前時間前、後一個月的函數
這需求折騰了我半天..
import time
import datetime as datetime
def late_time(time2):
# 先獲得時間數組格式的日期
#time2是外部傳入的任意日期
now_time = datetime.datetime.strptime(time2, '%Y-%m-%d')
#如需求是當前時間則去掉函數參數改寫 為datetime.datetime.now()
threeDayAgo = (now_time - datetime.timedelta(days =30))
# 轉換為時間戳
timeStamp =int(time.mktime(threeDayAgo.timetuple()))
# 轉換為其他字元串格式
otherStyleTime = threeDayAgo.strftime("%Y-%m-%d")
return otherStyleTime
a = late_time("2019-3-30")
print(a)# 列印2018-02-28
E. 如何在python中獲得當前時間前幾天的日期
很簡單,下面這些代碼是獲取當前日期的:
importtime
now=time.time()#當前時間戳
print(now)
print(time.ctime(now))#格式化當前時間戳
print(time.localtime(now))#當前時間結構體
mon=time.localtime(now)[1]#從當前時間結構體中提取月
day=time.localtime(now)[2]#從當前時間結構體中提取日
print("當前日期:%s月%s日"%(mon,day))#列印當前月與日
最終列印出來的結過如下:
這里為了演示,將時間戳計算拆解開來了,實際使用中為了提高效率,每天86400秒直接使用。而時間結構體的生成函數也應只使用一次,將返回值賦值給變數,然後從變數中分別提取。
此外還有一點尤其需要注意,Unix時間戳與Windows下不同,單位是毫秒而不是秒,所以在linux等系統下時間差還應額外乘以1000。
F. pandas怎麼找出異常日期
將數據類型轉換為日期類型
df['date'] = pd.to_datetime(df['date'])
1
將date設置為index
df = df.set_index('date')
1
獲取某年的數據
print(df['2010'].head())
1
獲取某月的數據
print(df['2013-11'].head())
1
提取全日期欄位中的日期和時間項
data4["訂單生成時間"] = pd.to_datetime(data4["訂單生成時間"])
data4["時間"] = data4["訂單生成時間"].dt.hour #提取時間
data4["日期"] = data4["訂單生成時間"].dt.date #提取日期
1
2
3
獲取某個日期之前/後或時間區間的數據
dataframe的.truncate()函數可以截取某個時期之前或之後的數據,或者某個時間區間的數據,進行統計分析。
注意事項:
使用.truncate()函數對df進行數據集截取,遇到截取數據不符合預期,且若時間序列無序會拋出異常
解決措施:
在使用.truncate()函數對df進行數據集截取之前,需要先使用df=df.sort_values(『date』)『date』列按時間先後進行排序,然後使用df = df.set_index('date'),將「date」設置為index,最後再使用df_last=df.truncate(after=『2019-05-22 16:00:00』)提取指定時間節點之前的數據。
函數語法:
DataFrame.truncate(before=None, after=None, axis=None, =True)
1
參數說明:
before:取值范圍:date,string,int,是指截斷此索引值之前的所有行
after:取值范圍:date,string,int,是指截斷此索引值後的所有行
axis:取值范圍:{0或』index』,1或』columns』}(可選),是指軸截斷。 默認情況截斷索引(行)。
:取值范圍:boolean,默認為True,返回截斷部分的副本
常見用法:
獲取2014年以後的數據
print(df.truncate(before='2014').head())
1
獲取2013-11月之前的數據,用after
print(df.truncate(after='2013-11').head())
1
獲取2016-02月以後的數據,用before
print(df.truncate(before='2016-02').head())
1
獲取2019-05-22日16:00:00時之前的數據
df=data.truncate(after='2019-05-22 16:00:00')
1
獲取指定時間區間的數據
df=df['2016-02-2':'2016-02-10']
1
獲取指定時間區間的數據
df=df['2016-02-2':'2016-02-10']
1
python 獲取當前時間及前一天時間
import datetime
from pandas.tseries.offsets import Day
now_time =datetime.datetime.now()#獲取當前時間
yes_time = (now_time -1*Day()).strftime('%Y-%m-%d')#格式化
print(yes_time)
1
2
3
4
5
pandas的日期時間間隔運算
import datetime
from datetime import timedelta
df_189[『訂單生成日期』]=pd.to_datetime(df_189[『訂單生成日期』]) #修改「訂單生成時間」的數據類型
df_189[『訂單生成日期』]+timedelta(days=1) #後一天的日期
df_189[『訂單生成日期』]-timedelta(days=3) #前3天的日期
選取指定時間范圍內/外的數據
##提取3日前日期和7日前日期
now_time =datetime.datetime.now()#獲取當前時間
yes_time_7 = (now_time -7*Day()).strftime('%Y-%m-%d')#格式化
yes_time_3= (now_time-3*Day()).strftime("%Y-%m-%d")
print(yes_time_7)
print('='*50)
print(yes_time_3)
df_189['訂單生成日期']=pd.to_datetime(df_189['訂單生成日期']) #修改「訂單生成時間」的數據類型
df_189_7= df_189[df_189['訂單生成日期']==yes_time_7]
df_189_3= df_189[df_189['訂單生成日期']==yes_time_3]
print(df_189_7.info())
#選取該錯誤數據對應的時間范圍外的數據,多個條件時 '|'代表'或','&'代表'且'
或者
a= df_189[df_189['訂單生成日期']=='2019-06-23'] #篩選2019-06-23的數據
1
2
3
4
5
6
7
8
9
10
11
12
13
14
利用pandas計算DataFrame兩列日期的間隔小時數
import pandas as pd
#方法一:
#先利用to_datetime轉換為時間格式,tm列的數據形式為'yyyy-MM-dd HH:mm:ss'
df['tm_1'] = pd.to_datetime(df['tm_1'])
df['tm_2'] = pd.to_datetime(df['tm_2'])
#利用".dt.seconds"轉換為秒,除以相對於的間隔數得到分鍾、小時等
df['diff_time'] = (df['tm_1'] - df['tm_2']).dt.seconds/60
#利用round函數可進行四捨五入
df['diff_time'] = round(df['diff_time'])
#方法二,日期相減變為小時;變為天的話將h替換為D即可:
df['diff_time'] = (df['tm_1'] - df['tm_2']).values/np.timedelta64(1, 'h')
#Dataframe中的時間是不能直接進行相加減的,所以需要先用pandas的to_datetime()方法,轉化成時間格式進行加減,然後再轉換成df格式
#delta=df1['Time_end']-df1['Time_start'] #直接報錯TypeError: unsupported operand type(s) for -: 'str' and 'str'
#日期相減變為小時;變為天的話將h替換為D即可:
sf_df['交易周期']=pd.DataFrame((pd.to_datetime(sf_df['交易完成時間'])-pd.to_datetime(sf_df['訂單生成時間'])).values/np.timedelta64(1,'h'))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
numpy中-Datetimes and Timedeltas的使用
日期格式轉換
在numpy中,使用np.datetime64('2017-08' , 'D')可以很方便的將字元串轉換成日期類型。
import numpy as np
np.datetime64('2017-08-06') #精確到日
>>>
numpy.datetime64('2017-08-06')
np.datetime64('2018-08') #精確到月
>>>
numpy.datetime64('2018-08')
# 通過參數,強制將數據格式轉為我們想要的粒度
np.datetime64('2017-08','D') #轉化到日
>>>
numpy.datetime64('2017-08-01')
np.datetime64('2017-08','Y') #轉化到年
>>>
numpy.datetime64('2017')
a = np.array(['2017-07-01','2017-07-15','2017-08-01'],dtype = np.datetime64) #列表日期
a
>>>
array(['2017-07-01', '2017-07-15', '2017-08-01'], dtype='datetime64[D]')
# 我們也可以使用arange函數初始化數組
b = np.arange('2017-08-01','2017-09-01',dtype = np.datetime64)
b
>>>
array(['2017-08-01', '2017-08-02', '2017-08-03', '2017-08-04',
'2017-08-05', '2017-08-06', '2017-08-07', '2017-08-08',
'2017-08-09', '2017-08-10', '2017-08-11', '2017-08-12',
'2017-08-13', '2017-08-14', '2017-08-15', '2017-08-16',
'2017-08-17', '2017-08-18', '2017-08-19', '2017-08-20',
'2017-08-21', '2017-08-22', '2017-08-23', '2017-08-24',
'2017-08-25', '2017-08-26', '2017-08-27', '2017-08-28',
'2017-08-29', '2017-08-30', '2017-08-31'], dtype='datetime64[D]')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
日期的計算
在numpy中,我們可以進行簡單的日期計算
# 兩個日期相減,會得到相差的天數
np.datetime64('2017-08-03') - np.datetime64('2017-07-15')
>>>
numpy.timedelta64(19,'D')
# 這里日期可以直接減去對應的天數
np.datetime64('2017-08-03') - np.timedelta64(20,'D')
>>>
#這里日期的粒度必須保證一樣,一個是D,一個是M,是不可以相減的
np.datetime64('2017-08-03') - np.timedelta64(1,'M')
>>>
TypeError: Cannot get a common metadata divisor for NumPy datetime metadata [D] and [M] because they have incompatible nonlinear base time units
np.datetime64('2017-08') - np.timedelta64(1,'M')
>>>
numpy.datetime64('2017-07')
(np.datetime64('2014-10-30 23:00:00') - np.datetime64('2014-10-21 00:00:00')) #按秒計時
(np.datetime64('2014-10-30 23:00:00') - np.datetime64('2014-10-21 00:00:00'))/np.timedelta64(1, 'h') #計算時間差,並轉為小時
>>>
239.0
#計算終止時間-初試時間,轉為小時格式,最後格式設置為整型。np.floor((x - start_hour) / np.timedelta64(1, 'h')).astype(np.uint16)
np.floor((np.datetime64('2014-10-30 23:00:00') -
np.datetime64('2014-10-21 00:00:00'))/np.timedelta64(1, 'h')).astype(np.uint16)
>>>
G. python 獲取當前月份月初日期和月末日期
使用time模塊的time.localtime()獲取當前日期,使用calendar模塊calendar.monthrange的來獲取指定月份的天數。即可得到月初日期和月末日期,代碼如下:
importcalendar
importtime
day_now=time.localtime()
day_begin='%d-%02d-01'%(day_now.tm_year,day_now.tm_mon)#月初肯定是1號
wday,monthRange=calendar.monthrange(day_now.tm_year,day_now.tm_mon)#得到本月的天數第一返回為月第一日為星期幾(0-6),第二返回為此月天數
day_end='%d-%02d-%02d'%(day_now.tm_year,day_now.tm_mon,monthRange)
print('月初日期為:',day_begin,'月末日期為:',day_end)
效果如下:
H. python怎麼獲得每個月的第一天和最後一天
第一天不用獲取吧,都是1呀,最後一天的話可以使用標准模塊的calendar模塊的monthrange(year,month)方法
該方法返回指定年月的最後一天星期和日期,類型為tuple,如
importcalendar
printcalendar.monthrange(2015,2)
結果為(6, 28),6為最後一天星期幾,28為2月的最後一天日期
I. python獲取日期的方法有哪些
python獲得某日時間的方法:1、輸入“import time”,“print time.time()”命令取得時間戳;2、運用“time.strftime()”方法格式化時間戳為標准格式即可獲得某日時間。
python獲取日期的方法有哪些?取得當前時間戳
import time
print time.time()
格式化時間戳為標准格式
1print time.strftime('%Y.%m.%d',time.localtime(time.time()))
獲取30天前的時間(通過加減秒數來獲取現在或者未來某個時間點)
print time.strftime('%Y.%m.%d',time.localtime(time.time()-2592000))
詳解:
取得時間相關的信息的話,要用到python time模塊,python time模塊裡面有很多非常好用的功能,可以去官方
文檔了解下,要取的當前時間的話,要取得當前時間的時間戳,時間戳好像是1970年到現在時間相隔的時間。
你可以試下下面的方式來取得當前時間的時間戳:
import time
print time.time()
python獲取日期的方法是什麼?輸出的結果是:
1357723206.31
但是這樣是一連串的數字不是我們想要的結果,我們可以利用time模塊的格式化時間的方法來處理:
time.localtime(time.time())
用time.localtime()方法,作用是格式化時間戳為本地的時間。
python獲取日期的方法有哪些?輸出的結果是:
time.struct_time(tm_year=2010, tm_mon=7, tm_mday=19, tm_hour=22, tm_min=33, tm_sec=39, tm_wday=0, tm_yday=200, tm_isdst=0)
現在看起來更有希望格式成我們想要的時間了。
time.strftime('%Y-%m-%d',time.localtime(time.time()))
最後用time.strftime()方法,把剛才的一大串信息格式化成我們想要的東西,現在的結果是:
2020-07-14
python獲取日期的方法有哪些?輸出日期和時間:
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
time.strftime裡面有很多參數,可以讓你能夠更隨意的輸出自己想要的東西:
下面是time.strftime的參數:
strftime(format[, tuple]) -> string
將指定的struct_time(默認為當前時間),根據指定的格式化字元串輸出
以上就是《python獲取日期的方法是什麼?這個方法才是你需要的》的全部內容,Python是一種動態解釋的、強類型定義語言:編寫它時不需要定義變數類型,運行時變數類型被強制固定,如果你想知道更多的python的相關方法,可以點擊本站的其他文章進行學習。