1.pandas模塊之period
1.1 period創建時期
import pandas as pd
# pd.Period()創建時期
p = pd.Period('2017', freq = 'M')
print(p, type(p))
# 生成一個以2017-01開始,月為頻率的時間構造器
# pd.Period()參數:一個時間戳 + freq 參數 → freq 用於指明該 period 的長度,時間戳則說明該 period 在時間軸上的位置
print(p + 1)
print(p - 2)
print(pd.Period('2020', freq = 'A-DEC') - 1) # A-月 DEC-12月
# 通過加減整數,將周期整體移動
# 這里是按照 月、年 移動
1.2 period_range創建時期范圍
import pandas as pd
import numpy as np
# pd.period_range()創建時期范圍
prng = pd.period_range('1/1/2011', '1/1/2012', freq='M')
print(prng,type(prng))
print(prng[0],type(prng[0]))
# 數據格式為PeriodIndex,單個數值為Period
ts = pd.Series(np.random.rand(len(prng)), index = prng)
print(ts,type(ts))
print(ts.index)
# 時間序列
# Period('2011', freq = 'A-DEC')可以看成多個時間期的時間段中的游標
# Timestamp表示一個時間戳,是一個時間截面;Period是一個時期,是一個時間段!!但兩者作為index時區別不大
1.3 asfreq頻率轉換
# asfreq:頻率轉換
import pandas as pd
import numpy as np
p = pd.Period('2017','A-DEC')
print(p)
print(p.asfreq('M', how = 'start')) # 也可寫 how = 's'
print(p.asfreq('D', how = 'end')) # 也可寫 how = 'e'
# 通過.asfreq(freq, method=None, how=None)方法轉換成別的頻率
prng = pd.period_range('2017','2018',freq = 'M')
ts1 = pd.Series(np.random.rand(len(prng)), index = prng)
ts2 = pd.Series(np.random.rand(len(prng)), index = prng.asfreq('D', how = 'start'))
print(ts1.head(),len(ts1))
print(ts2.head(),len(ts2))
# asfreq也可以轉換TIMESeries的index
1.4 時間戳與日期之間轉換
import pandas as pd
import numpy as np
# 時間戳與時期之間的轉換:pd.to_period()、pd.to_timestamp()
rng = pd.date_range('2017/1/1', periods = 10, freq = 'M')
prng = pd.period_range('2017','2018', freq = 'M')
ts1 = pd.Series(np.random.rand(len(rng)), index = rng)
print(ts1.head())
print(ts1.to_period().head())
# 每月最后一日,轉化為每月
ts2 = pd.Series(np.random.rand(len(prng)), index = prng)
print(ts2.head())
print(ts2.to_timestamp().head())
# 每月,轉化為每月第一天