python數據分析——時間序列

時間序列

  • 前言
  • 一、Datetime 模塊
    • 常用函數和數據結構的詳細解釋
    • datetime模塊
    • 示例一
    • 示例二
  • 二、時間運算
    • 示例一
    • 示例二
    • 示例三
  • 三、時間序列分析
    • 自回歸(Autoregressive model/AR)模型
      • 示例
    • 滑動平均(moving average model/MA)模型
      • 示例
    • 自回歸滑動平均(Autoregressive moving average model/ARMA) 模型
      • 示例


前言

時間序列是按照時間順序排列的一系列隨時間變化而變化的數據點或觀測值。時間序列可以是離散的,例如每月的銷售數據,也可以是連續的,例如氣溫和股票價格等。時間序列常用于預測和分析未來的趨勢,例如經濟增長、股票走勢、天氣變化等。

時間序列分析是數據分析中的重要部分,它涉及到對隨時間變化的數據進行研究,以揭示其內在規律、趨勢和周期性變化。Python作為一種強大的編程語言,擁有眾多的數據處理和可視化庫,如pandasnumpymatplotlibseaborn等,這些庫在處理時間序列數據時表現出色。

首先,我們需要明確什么是時間序列數據。時間序列數據是按照時間順序排列的一系列數據點,這些數據點可以是任何類型的測量值,如股票價格、氣溫、銷售額等。時間序列分析的目標是通過這些數據點來理解和預測未來的趨勢和模式。

在Python中,pandas庫是處理時間序列數據的首選工具。pandas提供了DataFrame數據結構,可以輕松地導入、清洗、轉換和分析時間序列數據。例如,我們可以使用pandasread_csv函數導入CSV格式的時間序列數據,然后使用to_datetime函數將日期列轉換為pandasDateTimeIndex格式,這樣可以更方便地進行時間序列分析。

一旦數據被導入并準備好,我們就可以使用pandas提供的各種函數來進行時間序列分析。例如,我們可以使用rolling函數來計算移動平均或移動標準差,以平滑數據并消除短期噪聲。我們還可以使用diff函數來計算數據的差分,以揭示數據的趨勢和周期性變化。

除了基本的統計分析,時間序列分析還包括更高級的技術,如ARIMA模型、指數平滑和傅里葉分析等。這些技術可以幫助我們更深入地理解數據的內在規律,并用于預測未來的趨勢。在Python中,我們可以使用statsmodels庫來實現這些高級技術。

最后,可視化是時間序列分析的重要組成部分。通過繪制時間序列圖、自相關圖、部分自相關圖等圖表,我們可以直觀地了解數據的趨勢、周期性和季節性變化。在Python中,matplotlibseaborn庫提供了豐富的繪圖功能,可以幫助我們創建高質量的可視化圖表。


一、Datetime 模塊

Python標準庫中包含了datetime模塊,該模塊提供了非常強大的功能來處理日期和時間。在Pandas中,時間序列數據可以通過多種方式表示,包括Python的原生datetime對象、字符串、整數等。

Datetime模塊提供了將這些不同的時間表示方式轉換為Pandas中的Datetime類型的函數,以及一系列常用的時間序列操作函數。

常用函數和數據結構的詳細解釋

以下是Datetime模塊的一些常用函數和數據結構的詳細解釋:

  1. to_datetime函數:將字符串或整數等轉換為Pandas中的Datetime類型。它能夠自動推斷日期的格式,并將其轉換為Pandas中的Datetime類型。例如,可以通過調用to_datetime函數將字符串"2021-01-01"轉換為Datetime對象。

  2. DatetimeIndex類:表示由Datetime類型組成的時間序列索引。它可以用于創建一個Datetime類型的索引,用于對時間序列數據進行索引和切片操作。

  3. Timestamp類:表示一個具體的時間點。它是Datetime模塊中最常用的數據結構之一,可以用于表示一個具體的日期和時間。例如,可以用Timestamp類表示"2021-01-01 12:00:00"這個特定的時間點。

  4. DateOffset類:表示一個時間偏移量,用于對時間進行增減操作。它可以與Datetime類型的對象進行加減運算,用于計算相對于一個特定時間點的偏移量。例如,可以通過將一個DateOffset對象加到一個Datetime對象上,得到一個新的Datetime對象。

  5. Period類:表示一個時間段。它是Datetime模塊中用于表示時間段的數據結構之一,可以表示一個時間段的開始和結束時間。例如,可以用Period類表示"2021-01-01"到"2021-01-31"這個時間段。

除了以上介紹的函數和數據結構之外,Datetime模塊還提供了一系列的時間序列操作函數,包括日期的加減運算、日期的比較判斷、日期的格式化輸出等。通過使用這些函數,可以方便地進行時間序列數據的處理和分析。

datetime模塊

Python的datetime模塊是Python標準庫中用于處理日期和時間的模塊。它提供了一系列的函數和數據結構,用于操作日期和時間。

datetime模塊中的主要類和函數包括:

  1. datetime類:表示一個具體的日期和時間。這個類提供了許多方法來操作日期和時間,如獲取年、月、日、時、分、秒等。

  2. date類:表示一個日期。這個類只包含年、月、日,不包含時間信息。

  3. time類:表示一個時間。這個類只包含時、分、秒,不包含日期信息。

  4. timedelta類:表示兩個日期或時間之間的時間差。可以對兩個日期或時間進行加減運算,得到它們之間的時間差。例如,可以計算兩個日期之間相隔多少天。

  5. strftime函數:用于將datetime對象格式化為字符串。可以根據指定的格式將日期和時間對象轉換成字符串,如將日期格式化為"YYYY-MM-DD"或將時間格式化為"HH:MM:SS"等。

  6. strptime函數:用于將字符串解析為datetime對象。可以根據指定的格式將字符串解析為datetime對象,如將"2021-01-01"解析為日期對象。

  7. now函數:返回當前的日期和時間。可以使用now函數獲取當前的日期和時間信息。

  8. timedelta函數:用于創建一個時間差。可以使用timedelta函數創建一個指定時間差的timedelta對象,如創建一個表示5天的時間差對象。

datetime模塊提供了一系列的函數和數據結構來處理日期和時間,可以方便地進行日期和時間的計算、格式化和解析等操作。它在數據分析、日志分析等領域都有廣泛的應用,是Python中處理日期和時間的重要工具。

總結:datatime模塊是在time模塊的基礎上做了封裝,提供了更多更好用的類,常用的類有datetimedatetime, timedelta, tzinfo

  • date類主要用于處理年、月、日的日期數據;
  • time類主要用于處理時、分、秒的時間數據;
  • datetime類是date類和time類的綜合,可以處理年、月、日、時、分、秒;
  • timedelta類主要用于做時間的加減運算;
方法(屬性)說明
today()返回當地的日期
fromtimestamp(timestamp)根據給定的時間戮,返回本地日期
mindate所能表示的最小日期
maxdate所能表示的最大日期
import datetimetimestamp = 1623988800  # Represents June 18, 2021, 12:00:00 AM (UTC)datetime_obj = datetime.datetime.fromtimestamp(timestamp)print(datetime_obj)  # Output: 2021-06-18 00:00:00

示例一

【例】請利用Python獲取當前日期。

關鍵技術:可以利用datetime模塊date類的today()方法將當前日期保存在變量中。

通過使用date.today(),可以創建一個date類對象,其中包含了日期元素,如年、月、日,但不包含時間元素,比如時分、秒。最后,可以使用yearmonthday來捕獲具體的日期元素。

import datetime
current_date= datetime. datetime. today()
print (current_date)
print (current_date. year)
print (current_date. month)
print (current_date. day)

在這里插入圖片描述

示例二

【例】請利用Python獲取當前日期和時間。

關鍵技術:可以利用datetime模塊datetime類的today()方法將當前日期和時間保存在變量中。

通過使用datetime.today(),可以創建一個datetime類對象,其中包含了日期元素和時間元素,如年、月、日、時、分、秒。最后,可以使用yearmonthday來捕獲具體的日期元素,通過hourminutesecond來捕獲具體的時間元素。

import datetime
current_date= datetime. datetime. today()
print (current_date)
print (current_date. year)
print (current_date. month)
print (current_date. day)
print (current_date. hour)
print (current_date. minute)
print (current_date. second)

在這里插入圖片描述

二、時間運算

示例一

【例】給定兩個時間類型的數據,計算兩個時間的不同之處。

關鍵技術:利用datetime將時間類型數據進行轉換,然后利用減法運算計算時間的不同之處,默認輸出結果轉換為用("天”,"秒”)表達。

在這里插入圖片描述
在這里插入圖片描述

示例二

【例】如果要將輸出結果轉換以“天”為單位,此時應該如何處理?

關鍵技術:針對上例中的delta變量,利用delta.days可以將輸出結果轉換以“天”為單位。

在這里插入圖片描述
輸出結果如下所示:379

示例三

【例】如果要將輸出結果轉換以“秒”為單位,此時應該如何處理?

關鍵技術:針對上例中的delta變量,利用delta.seconds可以將輸出結果轉換以“秒”為單位。
在這里插入圖片描述

輸出結果如下所示: 53100

三、時間序列分析

時間序列是把同一事件的歷史統計資料按照時間順序排列起來得到的一組數據序列,主要的分析方法包括移動平均和指數平滑。

時間序列預測法是以時間數列所能反映的社會經濟現象的發展過程和規律性進行引伸外推,預測其發展趨勢的方法。

時間序列預測法就是通過編制和分析時間序列,根據時間序列所反映出來的發展過程、方向和趨勢,進行類推或延伸,借以預測下一段時間或以后若干年內可能達到的水平。

自回歸(Autoregressive model/AR)模型

自回歸模型(Autoregressive Model,簡稱AR模型)僅通過時間序列變量的自身歷史觀測值來反映有關因素對預測目標的影響和作用,不受模型變量相互獨立的假設條件約束,所構成的模型可以消除普通回歸預測方法中由于自變量選擇、多重共線性等造成的困難,是最常見的平穩時間序列模型之一。

考慮一個單擺系統。

設xt為第t次擺動過程中的擺幅。根據物理原理,第 t 次的擺幅xt由前一次的擺幅xt-1決定,即有xt =a1xt-10考慮到空氣振動的影響,我們往往假設Xt = a1xt-1 + εt
在這里插入圖片描述

其中,隨機干擾εt~N(0, σ2 ),稱模型為一階自回歸模型。

更一般地,可以考慮序列值x可由前p個時刻的序列值及當前的噪聲表出,即xt= a1xt-1 +…+ ajXt-j+…+ apXt-p + εt模型。在這里插入圖片描述

其中,a;為參數, et為白噪聲,則稱該序列為 p階自回歸AR ( p)

示例

【例】已知存儲在d盤的給定某只股票的交易數據(timeseries_data.csv) ,請利用自回歸(AR)模型進行數據擬合,輸出AR模型的階數和擬合效果圖
在這里插入圖片描述

滑動平均(moving average model/MA)模型

滑動平均(moving average model/MA)模型也稱移動平均模型,是用過去各個時期的隨機干擾或預測誤差的線性組合來表達當前預測值。相比之下, AR模型是通過分析研究歷史數據對當前數據的影響進行建模。

q階MA模型的公式為:xt = μ + at - θ1at-1 - … - θqat-q在這里插入圖片描述

示例

【例】同樣對于上述給定的股票交易數據,請利用滑動平均(MA)模型進行數據擬合,輸出MA模型的擬合效果圖。
在這里插入圖片描述

自回歸滑動平均(Autoregressive moving average model/ARMA) 模型

ARMA模型就是AR模型和MA模型混合。在更加復雜的情況下,一個ARMA過程可能是AR與MA過程、幾個AR過程、AR與ARMA過程的迭加,也可能是測度誤差較大的AR過程。

ARMA(p,q)模型公式:
在這里插入圖片描述

由此可見, ARMA(p,0)模型就是AR( p )模型, ARMA(0,q)模型就是MA(q)模型。

示例

【例】同樣對于上述給定的股票交易數據,請利用自回歸滑動平均(ARMA)模型進行數據擬合,輸出ARMA模型的擬合效果圖。
在這里插入圖片描述


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11740.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11740.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11740.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

持續總結中!2024年面試必問 100 道 Java基礎面試題(四十五)

上一篇地址:持續總結中!2024年面試必問 100 道 Java基礎面試題(四十四)-CSDN博客 八十九、在Java中,什么是線程局部變量(ThreadLocal變量)? 在Java中,ThreadLocal變量是…

企業微信hook接口協議,ipad協議http,發送鏈接的方式邀請成員進群

發送鏈接的方式邀請成員進群 參數名必選類型說明uuid是String每個實例的唯一標識,根據uuid操作具體企業微信 請求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","roomid":10696052955013729, "vids":[788130334…

Flutter 中的 CircleAvatar 小部件:全面指南

Flutter 中的 CircleAvatar 小部件:全面指南 在 Flutter 中,CircleAvatar 是一個用于顯示頭像的圓形控件,通常包含一個圖標、圖片或者一個簡單的文本字符。它在設計上與 Material Design 指南中的頭像規范相匹配,常用于展示用戶信…

C# 常用匯總

時間處理 public static class DateTimeHelper{/// <summary>/// 獲取當前時間戳&#xff08;Unix時間戳&#xff09; /// </summary>/// <returns></returns>public static long GetCurrentUnixTimestamp(){DateTimeOffset offset DateTimeOffset.…

Qt---文件系統

一、基本文件操作 1. QFile對文件進行讀和寫 QFile file( path 文件路徑) 讀&#xff1a; file.open(打開方式) QlODevice::readOnly 全部讀取->file.readAll()&#xff0c;按行讀->file.readLine()&#xff0c;atend()->判斷是否讀到文件尾 …

Java網絡編程基礎

Java網絡編程基礎主要涉及進程間通信、網絡通信協議、IP地址和端口以及Java提供的網絡應用編程接口等核心概念。 進程間通信是Java網絡編程的基礎。進程是運行中的程序&#xff0c;而進程間通信則是指不同進程之間進行數據交換和共享信息的過程。在Java中&#xff0c;進程間的…

STM32存儲左右互搏 USB接口FATS文件讀寫U盤

STM32存儲左右互搏 USB接口FATS文件讀寫U盤 STM32的USB接口可以例化為Host主機從而對U盤進行操作。SD卡/MicroSD/TF卡也可以通過讀卡器轉換成U盤使用。這里介紹STM32CUBEIDE開發平臺HAL庫實現U盤FATS文件訪問的例程。 USB接口介紹 常見的USB接口電路部分相似而有不同的連接器…

K8S -----二進制搭建 Kubernetes v1.20

目錄 一、準備環境 1.1 修改主機名 1.2 關閉防火墻&#xff08;三臺一起&#xff0c;這里只展示master01&#xff09; 1.3 在master添加hosts&#xff08;依舊是三臺一起&#xff09; 1.4 調整內核參數并開啟網橋模式 二、部署docker引擎 三、部署 etcd 集群 1.在mast…

15.JUC原子類

文章目錄 JUC原子類1.JUC中的Atomic原子操作包1.1. 基本原子類&#xff08;Basic Atomic Classes&#xff09;1.2. 數組原子類&#xff08;Array Atomic Classes&#xff09;1.3. 引用原子類&#xff08;Reference Atomic Classes&#xff09;4. 字段更新原子類&#xff08;Fie…

StackQueue+泛型簡單理解

&#x1f341; 個人主頁&#xff1a;愛編程的Tom&#x1f4ab; 本篇博文收錄專欄&#xff1a;Java專欄&#x1f449; 目前其它專欄&#xff1a;c系列小游戲 c語言系列--萬物的開始_ &#x1f389; 歡迎 &#x1f44d;點贊?評論?收藏&#x1f496;三連支持一…

ddpm Denoising Diffusion Probabilistic Model 學習筆記

目錄 Stable Diffusion 文章的貢獻抽象出來就兩個 潛空間上做擴散生成 ddpm(Denoising Diffusion Probabilistic Model)學習筆記 算法原理 unet預測噪聲 unet推理過程 重參數化技巧 &#xff08;1&#xff09;利用前一時刻的 xt-1 得到任意時刻的噪聲圖片 xt&#xff…

LeetCode2215找出兩數組的不同

題目描述 給你兩個下標從 0 開始的整數數組 nums1 和 nums2 &#xff0c;請你返回一個長度為 2 的列表 answer &#xff0c;其中&#xff1a;answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整數組成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整數組…

Linux poweroff命令教程:如何實現一鍵關機(附實例詳解和注意事項)

Linux poweroff命令介紹 poweroff命令是用來關閉系統的。當你執行這個命令時&#xff0c;它會發送一個信號給系統&#xff0c;告訴系統關閉所有的進程&#xff0c;然后關閉系統。這個命令非常有用&#xff0c;特別是在你需要遠程關閉系統&#xff0c;或者你的系統沒有圖形用戶…

Autosar架構

藍框那種叫component&#xff0c;綠框的叫function cluster。 接口 有三種接口&#xff0c;RTE跟SWC之間鏈接的叫Autosar Interface&#xff0c;RTE跟BSW的Components鏈接是Standardized Interface&#xff0c;RTE跟BSW的services鏈接的是Standardized Autosar Interface。 St…

項目部署到線上proxytable代理失效nginx報404的問題

我的項目是在vue的config文件夾中的index.js中配置了接口地址 &#xff0c;本地跑的時候都能訪問&#xff0c;放到線上就報404&#xff1b; module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: {/xxx: {target: http://xxxxxxxx:xxx…

分享四種CAD圖紙加密方法,嚴防盜圖

在數字化時代&#xff0c;cad圖紙的盜用和非法傳播問題日益突出。對于企業和設計師來說&#xff0c;保護設計成果的安全性和原創性&#xff0c;采取有效的cad加密方法至關重要。本文將分享四種cad加密方法&#xff0c;幫助您嚴防盜圖&#xff0c;保護圖紙安全。 使用cad軟件內…

網絡協議的分類

1.概要 網絡協議可以分為三類&#xff1a; 封裝協議路由協議功能類協議 2.分類說明 OSPF報文直接調用_ IP協議__協議進行封裝&#xff0c;以目的地址_244.0.0.5 __發送到所有的OSPF路由器? 244.0.0.1 所有主機&#xff1b;244.0.0.2 所有路由器&#xff1b;244.0.0.6 指定…

【前端每日一題】day5

JS 實現繼承的幾種方式 在JavaScript中&#xff0c;實現繼承的幾種方式包括原型鏈繼承、構造函數繼承、組合繼承、原型式繼承、寄生式繼承和組合式繼承。 原型鏈繼承&#xff1a; function Parent() {this.name Parent; } Parent.prototype.sayHello function() {console.…

當它還是幼生期的時候,及早離開它!

當我們有豐富的精神生活時&#xff0c;充實的知識吸收儲備時&#xff0c;為自己的每一點進步而欣慰時&#xff0c;我們就不會有失敗的憂慮。也不會有孤單的自憐。 沒有人是弱者&#xff0c;每個人都有自己活著的方式&#xff0c;當你內心強大時&#xff0c;你會尊重每一個“弱者…

Vue+springboot的批量刪除功能

vue前臺 <div style"margin-bottom: 10px"><el-button type"primary" plain click"handleAdd">新增</el-button><el-button click"delBatch" type"danger" plain style"margin-left: 5px"…