import pandas as pd import numpy as np print(pd.Timestamp("2024-2-2")) # 时刻数据 print(pd.Period("2024-2-2", freq="M")) # 时期数据,YMD分别是年月日 index = pd.date_range("2024-2-2", periods=4, freq="D") index = pd.period_range("2024-2-2", periods=4, freq="D") s = pd.Series(np.random.randint(0, 10, size=4), index=index) print(s)
print(pd.to_datetime("2024-1-1")) print(pd.to_datetime(["2024-1-1", "2024-2-2"])) dt = pd.to_datetime(1689965251, unit="s") # 时间戳 -> 时间 print(dt + pd.DateOffset(hour=6)) # +6小时,hour=-6 -6小时
index = pd.date_range("2024-2-2", periods=100, freq="D") ts = pd.Series(range(len(index)), index=index) print(ts["2024-2-2"]) # 索引 print(ts["2024-2"]) # 2月份 print(ts["2024"]) # 年 print(ts.index) print(ts.index.year) # 年,月 month,日 day,星期几 dayofweek print(ts["2024-3-3":"2024-3-5"]) # 切片
时间移动:
index = pd.date_range("2024-2-2", periods=365, freq="D") ts = pd.Series(np.random.randint(0, 100, len(index)), index=index) print(ts.shift(periods=2)) # 默认后移1位,periods=2后移2位,负数是前移
频率转换:
print(ts.asfreq(pd.tseries.offsets.Week())) # 天 -> 星期,月初 MonthBegin,月末 MonthEnd print(ts.asfreq(pd.tseries.offsets.Hour(), fill_value=0)) # 天 -> 小时,由少变多可用fill_value填充空值
根据日期维度进行数据聚合,秒S,分钟T,小时H,天D,周W,月M,年Y。
index = pd.date_range("2024-2-2", periods=365, freq="D") ts = pd.Series(np.random.randint(0, 100, len(index)), index=index) print(ts.resample("3D").sum()) # 以3天为单位进行汇总求和 print(ts.resample("M").sum().cumsum()) # 以月为单位进行汇总求和,再累加 df = pd.DataFrame( { "price": [1, 2, 55, 48, 5], "score": [6, 5, 88, 14, 2], "week": pd.date_range("2024-1-5", periods=5, freq="W"), } ) print(df.resample("M", on="week").sum()) print(df.resample("M", on="week").agg({"price": np.mean, "score": np.sum}))
import pytz print(pytz.common_timezones) # 常用时区 index = pd.date_range("2024-2-2", periods=10, freq="D") ts = pd.Series(np.random.randint(0, 100, len(index)), index=index) ts = ts.tz_localize(tz="UTC") # 设置时区 ts = ts.tz_convert(tz="Asia/Shanghai") # 时区转换
本文作者:a
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!