Python資料分析 時間序列 重取樣

2022-01-30 02:08:33 字數 2793 閱讀 5541

目錄將時間序列從乙個頻率轉換為另乙個頻率的過程,且會有資料的結合。

降取樣:高頻資料 → 低頻資料,例如:以月為頻率的資料轉為以年為頻率的資料

公升取樣:低頻資料 → 高頻資料,例如:以年為頻率的資料轉為以月為頻率的資料

# 重取樣:.resample()

# 建立乙個以天為頻率的timeseries,重取樣為按2天為頻率

import pandas as pd

import numpy as np

rng = pd.date_range('20170101', periods = 12)

ts = pd.series(np.arange(12), index = rng)

print(ts)

ts_re = ts.resample('5d')

ts_re2 = ts.resample('5d').sum()

print(ts_re, type(ts_re))

print(ts_re2, type(ts_re2))

print('-----')

# ts.resample('5d'):得到乙個重取樣構建器,頻率改為5天

# ts.resample('5d').sum():得到乙個新的聚合後的series,聚合方式為求和

# freq:重取樣頻率 → ts.resample('5d')

# .sum():聚合方法

print(ts.resample('5d').mean(),'→ 求平均值\n')

print(ts.resample('5d').max(),'→ 求最大值\n')

print(ts.resample('5d').min(),'→ 求最小值\n')

print(ts.resample('5d').median(),'→ 求中值\n')

print(ts.resample('5d').first(),'→ 返回第乙個值\n')

print(ts.resample('5d').last(),'→ 返回最後乙個值\n')

print(ts.resample('5d').ohlc(),'→ ohlc重取樣\n')

# ohlc:金融領域的時間序列聚合方式 → open開盤、high最大值、low最小值、close**

# 降取樣

import pandas as pd

import numpy as np

rng = pd.date_range('20170101', periods = 12)

ts = pd.series(np.arange(1,13), index = rng)

print(ts)

print(ts.resample('5d').sum(),'→ 預設\n')

print(ts.resample('5d', closed = 'left').sum(),'→ left\n')

print(ts.resample('5d', closed = 'right').sum(),'→ right\n')

print('-----')

# closed:各時間段哪一端是閉合(即包含)的,預設 左閉右閉

# 詳解:這裡values為0-11,按照5d重取樣 → [1,2,3,4,5],[6,7,8,9,10],[11,12]

# left指定間隔左邊為結束 → [1,2,3,4,5],[6,7,8,9,10],[11,12]

# right指定間隔右邊為結束 → [1],[2,3,4,5,6],[7,8,9,10,11],[12]

print(ts.resample('5d', label = 'left').sum(),'→ leftlabel\n')

print(ts.resample('5d', label = 'right').sum(),'→ rightlabel\n')

# label:聚合值的index,預設為取左

# 值取樣認為預設(這裡closed預設)

# 公升取樣及插值

import pandas as pd

import numpy as np

rng = pd.date_range('2017/1/1 0:0:0', periods = 5, freq = 'h')

ts = pd.dataframe(np.arange(15).reshape(5,3),

index = rng,

columns = ['a','b','c'])

print(ts)

print(ts.resample('15t').asfreq())

print(ts.resample('15t').ffill())

print(ts.resample('15t').bfill())

# 低頻轉高頻,主要是如何插值

# .asfreq():不做填充,返回nan

# .ffill():向上填充

# .bfill():向下填充

# 時期重取樣 - period

import pandas as pd

import numpy as np

prng = pd.period_range('2016','2017',freq = 'm')

ts = pd.series(np.arange(len(prng)), index = prng)

print(ts)

print(ts.resample('3m').sum()) # 降取樣

print(ts.resample('15d').ffill()) # 公升取樣

python資料分析之 時間序列二

將timestamp 轉換為period 通過使用to period 方法,可以將由時間戳索引的 series 和dataframe 物件轉換為以時期索引 rng pd.date range 1 1 2000 periods 3,freq m ts series randn 3 index rng ...

Python資料分析 時間模組datetime

目錄2.日期解析方法dateutil.parser.parse 時間模組主要有 datetime.date datetime.datetime datetime.timedelta date主要用於獲取日期,例如獲取當前日期或者特定日期,獲取的日期可以由str方法直接轉化為字串格式 from dat...

python時間序列分析

什麼是時間序列 時間序列簡單的說就是各時間點上形成的數值串行,時間序列分析就是通過觀察歷史資料 未來的值。在這裡需要強調一點的是,時間序列分析並不是關於時間的回歸,它主要是研究自身的變化規律的 這裡不考慮含外生變數的時間序列 為什麼用python 用兩個字總結 情懷 愛屋及烏,個人比較喜歡pytho...