文章目录
-
- 1、date_range()
- 2、resample()
- 3、to_period()
1、date_range()
生成日期序列pandas.date_range(start=None, end=None, periods=None, freq=None, closed=None) 常见参数:start:开始日期end:结束日期periods:日期数量。 若同时指定start,end,periods,则会生成指定数量的时间间隔相同的日期closed:指定区间的开闭,默认是None,包含start和end (left,right)freq:日期的频率,默认是'D'即天,常见还有M(月、显示xxxx-xx-31每月的最后一天) 如下图 还可以数字与其组合,如5D就是时间间隔为5天
freq= |
说明 |
A/ Y |
year年 每年的最后一天 |
AS/YS |
AS/YS 每年的第一天 |
M |
month 每月的最后一天 |
MS |
每月的第一天 |
D |
day 每天 |
Q |
quarter 每季度的最后一天 |
QS |
每季度的第一天 |
H |
时 |
T/min |
分 |
S |
秒 |
import pandas as pdpd.date_range(start='2022-04-01',end='2022-05-31',periods=6)输出:DatetimeIndex(['2022-04-01', '2022-04-13', '2022-04-25', '2022-05-07', '2022-05-19', '2022-05-31'],dtype='datetime64[ns]', freq=None)pd.date_range(start='2022-04-01',end='2022-04-11',freq='D')输出:DatetimeIndex(['2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04', '2022-04-05', '2022-04-06', '2022-04-07', '2022-04-08', '2022-04-09', '2022-04-10', '2022-04-11'],dtype='datetime64[ns]', freq='D')pd.date_range(start='2022-04-01',end='2022-04-11',freq='2D')输出:DatetimeIndex(['2022-04-01', '2022-04-03', '2022-04-05', '2022-04-07', '2022-04-09', '2022-04-11'],dtype='datetime64[ns]', freq='2D')pd.date_range(start='2022-04-01',end='2022-04-11',freq='2D',closed='right')输出:DatetimeIndex(['2022-04-03', '2022-04-05', '2022-04-07', '2022-04-09', '2022-04-11'],dtype='datetime64[ns]', freq='2D')pd.date_range(start='2022-04-01',end='2022-05-31',freq='M')输出:DatetimeIndex(['2022-04-30', '2022-05-31'], dtype='datetime64[ns]', freq='M')pd.date_range(start='2022-04-01',end='2022-05-31',freq='M').to_period('M')输出:PeriodIndex(['2022-04', '2022-05'], dtype='period[M]', freq='M')pd.date_range(start='2022-01-01',end='2022-12-31',freq='QS')输出:DatetimeIndex(['2022-01-01', '2022-04-01', '2022-07-01', '2022-10-01'], dtype='datetime64[ns]', freq='QS-JAN')pd.date_range(start='2022-04-01',end='2022-04-02',freq='6H') 输出:DatetimeIndex(['2022-04-01 00:00:00', '2022-04-01 06:00:00', '2022-04-01 12:00:00', '2022-04-01 18:00:00', '2022-04-02 00:00:00'],dtype='datetime64[ns]', freq='6H')pd.date_range(start='2022-04-01',end='2022-04-02',freq='6H',closed='right')输出: 左开右闭 指的是不包含2022-04-01 00:00:00 包含2022-04-02 00:00:00DatetimeIndex(['2022-04-01 06:00:00', '2022-04-01 12:00:00', '2022-04-01 18:00:00', '2022-04-02 00:00:00'],dtype='datetime64[ns]', freq='6H')
2、resample()
重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。用这个方法之前需将日期作为索引并转化为日期型索引DataFrame.resample(rule,label=None).sum()等函数 两个指标足以 rule : 重构规则('M'、'2D'等上图所示)label:指定,我们使用哪一个作为新的label 区间的左还是右 默认左
np.random.seed(20) dt = pd.date_range(start='2022-01-01',end='2022-04-30',freq='D')num = np.random.randint(100,200,120)df = pd.DataFrame(num,index=dt,columns=['num'])df.index DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10', ... '2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24', '2022-04-25', '2022-04-26', '2022-04-27', '2022-04-28', '2022-04-29', '2022-04-30'],dtype='datetime64[ns]', length=120, freq='D')df.resample('MS').sum() num2022-01-0146472022-02-0141812022-03-0145052022-04-014489df.resample('M').sum().to_period('M') num2022-0146472022-0241812022-0345052022-044489df.resample('Q').sum() num2022-03-31133332022-06-304489df.resample('Q').sum().to_period('Q') num2022Q1133332022Q24489
3、to_period()
to_period('')描述的是该日期处于那个时期例如to_period('M') 将日期以月为单位即 xxxx-xx 某天处于某个月分
dt = pd.date_range(start='2021-04-01',end='2023-04-30',freq='100D')DatetimeIndex(['2021-04-01', '2021-07-10', '2021-10-18', '2022-01-26', '2022-05-06', '2022-08-14', '2022-11-22', '2023-03-02'],dtype='datetime64[ns]', freq='100D')dt.to_period('Y')PeriodIndex(['2021', '2021', '2021', '2022', '2022', '2022', '2022', '2023'], dtype='period[A-DEC]', freq='A-DEC')dt.to_period('M')PeriodIndex(['2021-04', '2021-07', '2021-10', '2022-01', '2022-05', '2022-08', '2022-11', '2023-03'], dtype='period[M]', freq='M')dt.to_period('Q')PeriodIndex(['2021Q2', '2021Q3', '2021Q4', '2022Q1', '2022Q2', '2022Q3', '2022Q4', '2023Q1'], dtype='period[Q-DEC]', freq='Q-DEC')
风车动漫