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

Pandas數(shù)據(jù)分析固定時間點和時間差

 更新時間:2022年08月11日 16:31:47   投稿:hqx  
這篇文章主要介紹了Pandas數(shù)據(jù)分析固定時間點和時間差,文章未日澳主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

pandas處理時間的對象有很多,分別表示不同的作用。

本次介紹固定時間對象和時間長對象。

還是先導入包:

import numpy as np 
import pandas as pd 
import datetime

固定時間 時間點對象的建立

時間點就表示一個時刻的具體時間,比如現(xiàn)在是2022年8月10日16:31:56。

時間對象的建立有很多方法。

#使用 python 的 datetime 庫,至少需要年月日

datetime.datetime.now()

#指定時間
datetime.datetime(2022,8,10,10,5)

#pandas 等第三方庫都是在datetime建立時間對象的
#pd.Timestamp() 是定義時間的主要函數(shù),代替 python 中的 datetime.datetime 對象。
pd.Timestamp(datetime.datetime(2020, 6, 8))

指定時間字符串

pd.Timestamp('2012-05-01')
# Timestamp('2012-05-01 00:00:00')
pd.Timestamp('2017-01-01T12')
# Timestamp('2017-01-01 12:00:00')

#指定時間位置數(shù)字,可以依次定義 year, month, day,hour, minute, second, microsecond

pd.Timestamp(2012, 5, 1)
# Timestamp('2012-05-01 00:00:00')
pd.Timestamp(2017, 1, 1, 12)
# Timestamp('2017-01-01 12:00:00')
pd.Timestamp(year=2017, month=1, day=1, hour=12)
# Timestamp('2017-01-01 12:00:00')
#解析時間戳
pd.Timestamp(1513393355.5, unit='s') # 單位為秒
# Timestamp('2017-12-16 03:02:35.500000')
#指定時區(qū)
pd.Timestamp(1513393355, unit='s', tz='US/Pacific')
# Timestamp('2017-12-15 19:02:35-0800', tz='US/Pacific')
# 指定為北京時間
pd.Timestamp(1513393355, unit='s', tz='Asia/Shanghai')
# Timestamp('2017-12-16 11:02:35+0800', tz='Asia/Shanghai')
 #特殊時間
#以下可取得當前時間,從而可通過屬性取到今天日期、年份等信息:
pd.Timestamp('today')
pd.Timestamp('now')
# Timestamp('2022-08-10 10:11:56.532981')
pd.Timestamp('today').date() # 只取日期

 #也可以計算出昨天、明天等信息:
# 昨天
pd.Timestamp('now')-pd.Timedelta(days=1)
# Timestamp('2020-06-08 16:14:39.254365')
# 明天
pd.Timestamp('now')+pd.Timedelta(days=1)
# Timestamp('2020-06-10 16:15:28.019039')
# 當月初,一日
pd.Timestamp('now').replace(day=1)
# Timestamp('2020-06-01 16:15:28.019039')
 #時間限制
#由于 Pandas 以納秒粒度表示時間戳,因此可以使用64位整數(shù)表示的時間跨度限制為大約584年:
pd.Timestamp.min
# Timestamp('1677-09-21 00:12:43.145225')
pd.Timestamp.max
# Timestamp('2262-04-11 23:47:16.854775807')

時間屬性

一個具體的時間包含了非常豐富的信息,如年份、在周幾、在幾月、在哪個季度,需要我們進行屬性的讀取。

#先創(chuàng)建一個時間
time = pd.Timestamp('now')
time

 以下是豐富的時間屬性:

time.asm8 # 返回 numpy datetime64格式(以納秒為單位)。
#numpy.datetime64('2022-08-10T09:58:52.365676000')
time.dayofweek # 1 周幾,周一為0
time.day_of_week # 同上
time.dayofyear # 161, 一年的第幾天
time.day_of_year # 同上
time.days_in_month # 30 當月有多少天
time.daysinmonth # 30 同上
time.freqstr # None, 周期字符
time.is_leap_year # True 是否閏年,公歷的
time.is_month_end # False 是否當月最后一天
time.is_month_start # False 是否當月第一天
time.is_quarter_end # False 是否當季最后一天
time.is_quarter_start # False 是否當季第一天
time.is_year_end # 是否當年最后一天
time.is_year_start # 是否當年第一天
time.quarter # 2 當前季度數(shù)
# 如指定會返回類似 <DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>
time.tz # None 當前時區(qū)別名
time.week # 24 當年第幾周
time.weekofyear # 24 同上
time.day # 9 日
time.fold # 0
time.freq # None 頻度周期
time.hour # 16
time.microsecond # 890462
time.minute # 46
time.month # 6
time.nanosecond # 0
time.second # 59
time.tzinfo # None
time.value # 1591721219890462000
time.year # 2020

時間方法

time = pd.Timestamp('now', tz='Asia/Shanghai')
# Timestamp('2020-06-09 16:55:58.027896+0800', tz='Asia/Shanghai')
#方法如下:
# 轉換為指定時區(qū)
time.astimezone('UTC')
# Timestamp('2020-06-09 08:55:58.027896+0000', tz='UTC')
# 轉換單位,向上舍入
time.ceil('s') # 轉為以秒為單位
# Timestamp('2020-06-09 16:55:59+0800', tz='Asia/Shanghai')
time.ceil('ns') # 轉為以納秒為單位
time.ceil('d') # 保留日
time.ceil('h') # 保留時
# 轉換單位, 為向下舍入
time.floor('h') # 保留時
# Timestamp('2020-06-09 17:00:00+0800', tz='Asia/Shanghai')
# 類似四舍五入
time.round('h') # 保留時
# 返回星期名
time.day_name() # 'Tuesday'
# 月份名稱
time.month_name() # 'June'
 
# 將時間戳規(guī)范化為午夜,保留tz信息。
time.normalize()
# Timestamp('2020-06-09 00:00:00+0800', tz='Asia/Shanghai')
 
# 時間元素替換 datetime.replace,可處理納秒。
time.replace(year=2019) # 年份換為2019年
# Timestamp('2019-06-09 17:14:44.126817+0800', tz='Asia/Shanghai')
time.replace(month=8) # 月份換為8月
# Timestamp('2020-08-09 17:14:44.126817+0800', tz='Asia/Shanghai')
 
# 轉為周期類型,將丟失時區(qū)
time.to_period(freq='h') # 周期為小時
# Period('2020-06-09 17:00', 'H')
 
# 轉為指定時區(qū)
time.tz_convert('UTC') # 轉為 utc 時間
# Timestamp('2020-06-09 09:14:44.126817+0000', tz='UTC')
# 本地化時區(qū)轉換
time = pd.Timestamp('now')
time.tz_localize('Asia/Shanghai')
# Timestamp('2020-06-09 17:32:47.388726+0800', tz='Asia/Shanghai')
time.tz_localize(None) # 刪除時區(qū)

時間缺失值

pd.Timestamp(pd.NaT)
#參與計算
pd.NaT+pd.Timestamp('20201001')

.dt 時間訪問器

#對于時間序列數(shù)據(jù),可以使用 s.dt.xxx 的形式來訪問它們的屬性和調用它們的方法:

s = pd.Series(pd.date_range('2020-01-01', periods=3, freq='d'))
s.dt.date
s.dt.time
s.dt.timetz
s.dt.year
s.dt.month
s.dt.day
s.dt.hour
s.dt.minute
s.dt.second
s.dt.microsecond
s.dt.nanosecond
s.dt.week
s.dt.weekofyear
s.dt.dayofweek
s.dt.weekday
s.dt.dayofyear
s.dt.quarter
s.dt.is_month_start
s.dt.is_month_end
s.dt.is_quarter_start
s.dt.is_quarter_end
s.dt.is_year_start
s.dt.is_year_end
s.dt.is_leap_year
s.dt.daysinmonth
s.dt.days_in_month
s.dt.tz
s.dt.freq
s.dt.to_period
s.dt.to_pydatetime
s.dt.tz_localize
s.dt.tz_convert
s.dt.normalize
s.dt.strftime
s.dt.round
s.dt.floor
s.dt.ceil
s.dt.month_name
s.dt.day_name
s.dt.qyear
s.dt.start_time
s.dt.end_time
s.dt.days
s.dt.seconds
s.dt.microseconds
s.dt.nanoseconds
s.dt.components
s.dt.to_pytimedelta
s.dt.total_seconds
 
# 個別用法舉例
s.dt.tz_localize('UTC').dt.tz_convert('US/Eastern')
s.dt.strftime('%Y/%m/%d')

時長數(shù)據(jù)

時間差

和上面的時間點比起來,時間差就表示一個時間的長度,一天一小時這種時間差。

Timedelta 數(shù)據(jù)類型用來代表時間增量,兩個固定時間相減會產生時差: 

# 兩個固定時間相減
pd.Timestamp('2020-11-01 15') - pd.Timestamp('2020-11-01 14')
# Timedelta('0 days 01:00:00')
pd.Timestamp('2020-11-01 08') - pd.Timestamp('2020-11-02 08')
# Timedelta('-1 days +00:00:00')

按以下格式傳入字符串:

# 一天
pd.Timedelta('1 days')
# Timedelta('1 days 00:00:00')
pd.Timedelta('1 days 00:00:00')
# Timedelta('1 days 00:00:00')
pd.Timedelta('1 days 2 hours')
# Timedelta('1 days 02:00:00')
pd.Timedelta('-1 days 2 min 3us')
# Timedelta('-2 days +23:57:59.999997'
用關鍵字參數(shù)指定時間:
pd.Timedelta(days=5, seconds=10)
# Timedelta('5 days 00:00:10')
pd.Timedelta(minutes=3, seconds=2)
# Timedelta('0 days 00:03:02')

# 可以實現(xiàn)指定分鐘有多少天,多少小時
pd.Timedelta(minutes=3242)

 使用帶周期量的偏移量別名:

# 一天
pd.Timedelta('1D')
# Timedelta('1 days 00:00:00')
# 兩周
pd.Timedelta('2W')
# Timedelta('14 days 00:00:00')
# 一天2小時3分鐘4秒
pd.Timedelta('1D2H3M4S')

帶單位的整型數(shù)字:

# 一天
pd.Timedelta(1, unit='d')
# 100 秒
pd.Timedelta(100, unit='s')
# Timedelta('0 days 00:01:40')
# 4 周
pd.Timedelta(4, unit='w')
# Timedelta('28 days 00:00:00')

Python內置的datetime.timedelta或者Numpy的np.timedelta64:

# 一天10分鐘
pd.Timedelta(datetime.timedelta(days=1, minutes=10))
# Timedelta('1 days 00:10:00')
 
# 100納秒
pd.Timedelta(np.timedelta64(100, 'ns'))
# Timedelta('0 days 00:00:00.000000100')

負值 

# 負值
pd.Timedelta('-1min')
# Timedelta('-1 days +23:59:00')
 
# 空值,缺失值
pd.Timedelta('nan')
# NaT
 
# pd.Timedelta('nat')
# NaT

也可以用 DateOffsets (Day, Hour, Minute, Second, Milli, Micro, Nano) 來構建:

pd.Timedelta(pd.offsets.Second(2))
# Timedelta('0 days 00:00:02')
 
#to_timedelta,可以直接生成單個時長數(shù)據(jù):
pd.to_timedelta('1 days 06:05:01.00003')
# Timedelta('1 days 06:05:01.000030')
pd.to_timedelta('15.5us')
# Timedelta('0 days 00:00:00.000015')
 
pd.to_timedelta(pd.offsets.Day(3))
# Timedelta('3 days 00:00:00')
 
pd.to_timedelta('15.5min')
# Timedelta('0 days 00:15:30')
 
pd.to_timedelta(124524564574835)
# Timedelta('1 days 10:35:24.564574835')

時長可以相加:

pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta('00:00:00.000123')
# Timedelta('2 days 00:00:02.000123')

以下是一些操作示例:

s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([pd.Timedelta(days=i) for i in range(3)])
df = pd.DataFrame({'A': s, 'B': td})
df

df['C'] = df['A'] + df['B']
df

df.dtypes

時長屬性

tdt=pd.Timedelta('10 days 9 min 3 sec')
tdt.days
tdt.seconds
tdt.value #(時間戳)

到此這篇關于Pandas數(shù)據(jù)分析固定時間點和時間差的文章就介紹到這了,更多相關Pandas固定時間點內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python configparser模塊常用方法解析

    Python configparser模塊常用方法解析

    這篇文章主要介紹了Python configparser模塊常用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Python參數(shù)傳遞實現(xiàn)過程及原理詳解

    Python參數(shù)傳遞實現(xiàn)過程及原理詳解

    這篇文章主要介紹了Python參數(shù)傳遞實現(xiàn)過程及原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • python在windows調用svn-pysvn的實現(xiàn)

    python在windows調用svn-pysvn的實現(xiàn)

    本文主要介紹了python在windows調用svn-pysvn的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python 實現(xiàn)在文件中的每一行添加一個逗號

    Python 實現(xiàn)在文件中的每一行添加一個逗號

    下面小編就為大家分享一篇Python 實現(xiàn)在文件中的每一行添加一個逗號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python簡單生成隨機數(shù)的方法示例

    Python簡單生成隨機數(shù)的方法示例

    這篇文章主要介紹了Python簡單生成隨機數(shù)的方法,結合實例形式分析了Python基于random模塊生成隨機數(shù)的相關操作技巧,需要的朋友可以參考下
    2018-03-03
  • 簡單了解python協(xié)程的相關知識

    簡單了解python協(xié)程的相關知識

    這篇文章主要介紹了簡單了解python協(xié)程的相關知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python2.7安裝opencv-python很慢且總是失敗問題

    python2.7安裝opencv-python很慢且總是失敗問題

    這篇文章主要介紹了python2.7安裝opencv-python很慢且總是失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 帶你詳細了解Python GUI編程框架

    帶你詳細了解Python GUI編程框架

    今天小編就為大家分享一篇python 實現(xiàn)GUI(圖形用戶界面)編程詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-08-08
  • python實現(xiàn)跨域代理服務器的方法

    python實現(xiàn)跨域代理服務器的方法

    這篇文章主要介紹了python實現(xiàn)跨域代理服務器的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Python numpy ndarray屬性,索引,切片

    Python numpy ndarray屬性,索引,切片

    這篇文章主要介紹了Python numpy ndarray屬性,索引,切片,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論