溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python的Pandas時序數(shù)據(jù)實例分析

發(fā)布時間:2022-03-09 13:52:33 來源:億速云 閱讀:178 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Python的Pandas時序數(shù)據(jù)實例分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python的Pandas時序數(shù)據(jù)實例分析”吧!

    Pandas時序數(shù)據(jù)

    前言 在數(shù)據(jù)分析中,時序數(shù)據(jù)是一類非常重要的數(shù)據(jù)。事物的發(fā)展總是伴隨著時間的推移,數(shù)據(jù)也會在各個時間點上產(chǎn)生。

    一、python中的時間表示-datetime模塊

    Python的標(biāo)準(zhǔn)庫datetime支持創(chuàng)建和處理時間,Pandas的時間時序模塊是在datetime的基礎(chǔ)上建立的。

    1.換取當(dāng)前時間
    import datetime
    
    now = datetime.datetime.now()  # 2022-03-06 18:43:49.506048

    其中now的全貌如下,是一個datetime對象:

    now: datetime.datetime(2022, 3, 6, 18, 37, 10, 132078)

     datetime.datetime對象常用的方法:

    (1) strftime(): 對datetime對象的格式進(jìn)行轉(zhuǎn)換。使用含%的占位符書寫目標(biāo)格式,如:

    newForm = now.strftime("%Y-%m-%d (%H:%M:%S)")
    # 2022-03-06 (18:52:31)  為字符串類型

    各占位符的含義如下

    % y 兩位數(shù)的年份表示(00 - 99)
    % Y 四位數(shù)的年份表示(000 - 9999)
    % m 月份(01 - 12)
    % d 月內(nèi)中的一天(0 - 31)
    % H 24小時制小時數(shù)(0 - 23)
    % I 12小時制小時數(shù)(01 - 12)
    % M 分鐘數(shù)(00 = 59)
    % S 秒(00 - 59)
    % a 本地簡化星期名稱
    % A 本地完整星期名稱
    % b 本地簡化的月份名稱
    % B 本地完整的月份名稱
    % c 本地相應(yīng)的日期表示和時間表示
    % j 年內(nèi)的一天(001 - 366)
    % p 本地A.M.或P.M.的等價符
    % U 一年中的星期數(shù)(00 - 53)星期天為星期的開始
    % w 星期(0 - 6),星期天為星期的開始
    % W 一年中的星期數(shù)(00 - 53)星期一為星期的開始
    % x 本地相應(yīng)的日期表示
    % X 本地相應(yīng)的時間表示
    % Z 當(dāng)前時區(qū)的名稱
    % %  % 號本身
    2.指定時間

    datetime.datetime()中傳入對應(yīng)的參數(shù),默認(rèn)按照單位從大到小指定

    birthday = datetime.datetime(2001, 1, 11)  # 默認(rèn)指定
    print(birthday)

    也可以通過參數(shù)指定,其中year、monnthday三個參數(shù)必須指定

    yesterday = pd.Timestamp(2022, 3, 5)  # 2022-03-05 00:00:00
    now = pd.Timestamp("now")  # 2022-03-06 19:13:56.507604
    3.運算

    (1) datetime.datetime對象之間支持減法運算,得到的是一個datetime.timedelta對象

    delta = yeaterday - birthday  # 7723 days, 0:00:00

    二、 Pandas處理時序序列 

    1.pd.Timestamp()

    pd.Timestamp()Pandas定義事時間的主要函數(shù), 支持更豐富的定義時間的構(gòu)造方法

    (1) 根據(jù)datetime.datetime對象

    now = pd.Timestamp(datetime.datetime.now())
    print(now)  # 2022-03-06 19:07:07.253402

    (2) 根據(jù)字符串

    today = pd.Timestamp("2022-03-06")
    print(today)  # 2022-03-06 00:00:00

    (3) 更具指定的參數(shù)

    yesterday = pd.Timestamp(2022, 3, 5)  # 2022-03-05 00:00:00
    now = pd.Timestamp("now")  # 2022-03-06 19:13:56.507604

    (4) 根據(jù)時間戳

    pd.Timestamp(1646565103.114923, unit="s")  # unit指定單位為秒

    2.pd.Timedelta()

    pd.Timedelta()用于創(chuàng)建時間差對象,也具有與pd.Timestamp()類似的構(gòu)造方法。

    (1) 根據(jù)字符串創(chuàng)建

    oneDay = pd.Timedelta("1 days")  # 1 days 00:00:00
    duration = pd.Timedelta("2 days 2 hours")  # 1 days 02:00:00

    (2) 指定參數(shù)創(chuàng)建

    oneDay = pd.Timedelta(days=1)  # 1 days 00:00:00

    3.運算

    與`datetime`模塊運算類似,`pandas`的`Timestamp`對象之間相減可以得到`Timedelta`對象。

    4.時間索引

    數(shù)據(jù)表中長常使用時間作為索引,pandas支持創(chuàng)建長時間序列

    (1) pd.to_datetime()

    pd.to_datetime()支持將時間對象和類時間字符串轉(zhuǎn)化為DatetimeIndex對象。

    index = pd.to_datetime(["03/06/2022", datetime.datetime.now()])
    print(index)
    # DatetimeIndex(['2022-03-06 00:00:00', '2022-03-06 19:29:44.855267'], dtype='datetime64[ns]', freq=None)

    (2) pd.date_range()

     pd.date_range()可以給定開始時間或者結(jié)束時間,并且指定周期數(shù)據(jù),周期頻率,會自動生成在此范圍的時間索引數(shù)據(jù):

    index = pd.date_range(start="2022-01-01", periods=10)
    print(index)
    # DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04',
                   '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08',
                   '2022-01-09', '2022-01-10'],
                  dtype='datetime64[ns]', freq='D')

    如果要跳過休息日可以使用pd.bdate_range()函數(shù)

    感謝各位的閱讀,以上就是“Python的Pandas時序數(shù)據(jù)實例分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python的Pandas時序數(shù)據(jù)實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI