包含python時間序列索引時間的詞條

本文目錄一覽:

python中時間序列數據的一些處理方式

datetime.timedelta對象代表兩個時間之間的時間差,兩個date或datetime對象相減就可以返回一個timedelta對象。

利用以下數據進行說明:

如果我們發現時間相關內容的變數為int,float,str等類型,不方便後面的分析,就需要使用該函數轉化為常用的時間變數格式:pandas.to_datetime

轉換得到的時間單位如下:

如果時間序列格式不統一,pd.to_datetime()的處理方式:

當然,正確的轉換是這樣的:

第一步:to_datetime()

第二步:astype(datetime64[D]),astype(datetime64[M])

本例中:

order_dt_diff必須是Timedelta(‘0 days 00:00:00’)格式,可能是序列使用了diff()

或者pct_change()。

前者往往要通過’/np.timedelta’去掉單位days。後者其實沒有單位。

假如我們要統計某共享單車一天內不同時間點的用戶使用數據,例如

還有其他維度的提取,年、月、日、周,參見:

Datetime properties

注意 :.dt的對象必須為pandas.Series,而不可以是Series中的單個元素

Pandas-時間序列基礎

Python標準庫中包含用於日期和時間的數據類型,而且還有日曆方面的功能,我們主要會用到datetime、time和calendar模塊,datetime.datetime是用的最多的數據類型。

datetime以毫秒形式存儲日期和時間,datetime.timedelta表示兩個datetime對象之間的時間差.

可以給datetime對象加上或者減去一個或多個timedelta,會產生一個新對象:

利用str或者strftime方法,datetime對象和pandas的Timestamp對象可以被格式化為字元串:

datetime.strptime也可以用這些格式化編碼將字元串轉化為日期:

datetime.strptime是通過已知格式進行日期解析的最佳方式,但是每次都要編寫格式定義很麻煩,尤其是對於一些常見的日期格式,這種情況下,可以用dateutil這個第三方包中的parser.parse方法,dateutil可以解析幾乎所有人類能夠理解的日期表示形式:

在國際通用格式中,日通常出現在月的前面,傳入dayfirst=True即可:

pandas通常是用於處理成組日期的,不管這些日期是DataFrame的軸索引還是列,to_datetime方法可以解析多種不同的日期表示形式。

to_datetime可以處理缺失值,NAT是pandas中時間戳數據的NA值:

pandas最基本的時間序列類型就是以時間戳為索引的Series:

這裡的Series索引不是普通的索引,而是DatetimeIndex,而ts變為了一個TimeSeries,同時,可以看到,pandas用Numpy的datetime64數據類型以納秒形式存儲時間戳。

跟其他Series一樣,不同索引的時間序列之間的算數運算會自動對齊:

DateTimeIndex中的各個標量值是pandas的Timestamp對象.

由於TimeSeries是Series的一個子類,所以在索引以及數據選曲方面他們的行為是一樣的,但是我們還可以傳入一個可以被解釋為日期的字元串來進行索引:

對於較長的時間序列,只需傳入年或年月即可輕鬆選取數據的切片:

通過日期進行切片的方式只對規則Series有效:

還有一個等價的實例方法也可以截取兩個日期之間的TimeSeries:

DataFrame也同樣適用上面的規則

pandas中的時間序列一般被認為是不規則的,也就是說,沒有固定的頻率,對於大部分程序而言,這是無所謂的,但是,他常常需要以某種相對固定的頻率進行分析,比如每月,每日,每15min等。pandas有一套標準時間序列頻率以及用於重採樣,頻率推斷,生成固定頻率日期範圍的工具.

例如,我們可以將之前的時間序列轉換為一個具有固定頻率(每日)的時間序列,只需調用resample即可.返回DatetimeIndexResampler,獲取值使用asfreq():

生成日期範圍使用date_range函數

默認情況下,date_range會產生按天計算的時間點,如果只傳入起始或結束日期,那就還得傳入一個表示一段時間的數字:

如果你不想按天生成數據,想要按照一定的頻率生成,我們傳入freq參數即可.如想按5小時生成數據:

如果你想生成一個由每月最後一個工作日組成的日期索引,可以使用BM頻率:

date_range默認會保留起始和結束的時間戳的時間信息,但是如果我們想產生一組規範化到午夜的時間戳,normalize選項可以實現這個功能:

WOM(week of Month)是一種非常實用的頻率類,它以WOM開頭,它使你能獲得諸如每月第三個星期五之類的日期:

python中datetime怎麼設置時區

1、默認情況下,pandas中的時間序列是單純(naive)的時區,其索引的tz欄位為None。

2、可以用時區集生成日期範圍。

3、從單純到本地化的轉換是通過tz_localize方法處理的。

4、一旦時間序列被本地化到某個特定時區,就可以用tz_convert將其轉換到別的時區了。

5、對於上面這種時間序列(它跨越了美國東部時區的夏令時轉變期),我們可以將其本地化到EST,再轉換為UTC或柏林時間。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/219812.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 11:01
下一篇 2024-12-09 11:01

相關推薦

  • Python基本索引用法介紹

    Python基本索引是指通過下標來獲取列表、元組、字元串等數據類型中的元素。下面將從多個方面對Python基本索引進行詳細的闡述。 一、列表(List)的基本索引 列表是Pytho…

    編程 2025-04-29
  • 如何將Oracle索引變成另一個表?

    如果你需要將一個Oracle索引導入到另一個表中,可以按照以下步驟來完成這個過程。 一、創建目標表 首先,需要在資料庫中創建一個新的表格,用來存放索引數據。可以通過以下代碼創建一個…

    編程 2025-04-29
  • 解決docker-compose 容器時間和伺服器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與伺服器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • 索引abc,bc會走索引嗎

    答案是:取決於MySQL版本和表結構 一、MySQL版本的影響 在MySQL 5.6之前的版本中,MySQL會同時使用abc和bc索引。但在MySQL 5.6及之後的版本中,MyS…

    編程 2025-04-29
  • Python切片索引越界是否會報錯

    解答:當對一個字元串、列表、元組進行切片時,如果索引越界會返回空序列,不會報錯。 一、切片索引的概念 切片是指對序列進行操作,從其中一段截取一個新序列。序列可以是字元串、列表、元組…

    編程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在數據分析、機器學習、圖像處理等很多領域都有廣泛的應用。Python序列分為三種:列表(list)、元組(tuple)和字元串(string)。…

    編程 2025-04-28
  • 想把你和時間藏起來

    如果你覺得時間過得太快,每天都過得太匆忙,那麼你是否曾經想過想把時間藏起來,慢慢享受每一個瞬間?在這篇文章中,我們將會從多個方面,詳細地闡述如何想把你和時間藏起來。 一、一些時間管…

    編程 2025-04-28
  • 計算斐波那契數列的時間複雜度解析

    斐波那契數列是一個數列,其中每個數都是前兩個數的和,第一個數和第二個數都是1。斐波那契數列的前幾項為:1,1,2,3,5,8,13,21,34,…。計算斐波那契數列常用…

    編程 2025-04-28
  • Python數組索引位置用法介紹

    Python是一門多用途的編程語言,它有著非常強大的數據處理能力。數組是其中一個非常重要的數據類型之一。Python支持多種方式來操作數組的索引位置,我們可以從以下幾個方面對Pyt…

    編程 2025-04-28
  • 時間戳秒級可以用int嗎

    時間戳是指從某個固定的時間點開始計算的已經過去的時間。在計算機領域,時間戳通常使用秒級或毫秒級來表示。在實際使用中,我們經常會遇到需要將時間戳轉換為整數類型的情況。那麼,時間戳秒級…

    編程 2025-04-28

發表回復

登錄後才能評論