生成时间戳的范围在Pandas中是一项常见任务。利用Pandas可以生成从某个起点到终点的一系列连续的时间戳。下面我们来详细讲解Pandas如何实现这样的功能。
创建时间戳范围
我们可以使用 date_range()
函数来创建时间戳范围。它具有以下语法:
pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None,
normalize=False, name=None, closed=None, **kwargs)
start
:起始时间戳。end
:结束时间戳。periods
:时间戳的数量。freq
:时间戳的频率。tz
:如果存在时区,则代表时区。normalize
:如果为True,则将时间戳归一化为午夜,否则使用指定的时间值。name
:一个名称(字符串)用于表示返回的时间戳的名称。closed
:确定范围的开始和结束是否包含在内。如果为None
时则根据freq
判断。
下面我们分别说明这些参数的含义并通过实例来演示。
指定起点和终点参数
我们可以通过指定 start
、end
参数来生成一系列时间戳。两个参数必须要指定一个。
import pandas as pd
# 生成2019年1月1日到2019年12月31日范围内的日期时间戳
date_range = pd.date_range(start='2019-01-01', end='2019-12-31')
print(date_range)
以上代码输出:
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10',
...
'2019-12-22', '2019-12-23', '2019-12-24', '2019-12-25',
'2019-12-26', '2019-12-27', '2019-12-28', '2019-12-29',
'2019-12-30', '2019-12-31'],
dtype='datetime64[ns]', length=365, freq='D')
以上代码会返回一个DatetimeIndex
类型的时间戳范围,其中start
和 end
参数的日期都包含在范围内,并且默认范围是按照天数生成的。通过这种方式创建的时间戳范围包含了 2019 年的所有日期。
指定时间戳的数量
我们可以通过指定periods
参数来生成一定数量的时间戳。可以将起点和终点都设置为 None
。
import pandas as pd
# 从2019年1月1日开始生成100个日期时间戳
date_range = pd.date_range(start='2019-01-01', periods=100)
print(date_range)
输出结果:
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10', '2019-01-11', '2019-01-12',
'2019-01-13', '2019-01-14', '2019-01-15', '2019-01-16',
'2019-01-17', '2019-01-18', '2019-01-19', '2019-01-20',
'2019-01-21', '2019-01-22', '2019-01-23', '2019-01-24',
'2019-01-25', '2019-01-26', '2019-01-27', '2019-01-28',
'2019-01-29', '2019-01-30', '2019-01-31', '2019-02-01',
'2019-02-02', '2019-02-03', '2019-02-04', '2019-02-05',
'2019-02-06', '2019-02-07', '2019-02-08', '2019-02-09',
'2019-02-10', '2019-02-11', '2019-02-12', '2019-02-13',
'2019-02-14', '2019-02-15', '2019-02-16', '2019-02-17',
'2019-02-18', '2019-02-19', '2019-02-20', '2019-02-21',
'2019-02-22', '2019-02-23', '2019-02-24', '2019-02-25',
'2019-02-26', '2019-02-27', '2019-02-28', '2019-03-01',
'2019-03-02', '2019-03-03', '2019-03-04', '2019-03-05',
'2019-03-06', '2019-03-07', '2019-03-08', '2019-03-09',
'2019-03-10', '2019-03-11', '2019-03-12', '2019-03-13',
'2019-03-14', '2019-03-15', '2019-03-16', '2019-03-17',
'2019-03-18', '2019-03-19', '2019-03-20', '2019-03-21',
'2019-03-22', '2019-03-23', '2019-03-24', '2019-03-25',
'2019-03-26', '2019-03-27', '2019-03-28', '2019-03-29',
'2019-03-30', '2019-03-31', '2019-04-01', '2019-04-02',
'2019-04-03', '2019-04-04', '2019-04-05', '2019-04-06',
'2019-04-07', '2019-04-08', '2019-04-09', '2019-04-10',
'2019-04-11', '2019-04-12', '2019-04-13', '2019-04-14'],
dtype='datetime64[ns]', freq='D')
可以看到,该方法会生成一个长度为100的日期时间戳。起始日期是指定的日期,生成的日期按照天数递增。
指定时间戳的频率
可以通过指定freq
来生成一定步长的时间戳。例如:
import pandas as pd
# 生成每周日的日期时间戳范围
date_range = pd.date_range(start='2022-01-01', end='2022-12-31', freq='W-SUN')
print(date_range)
以上代码会生成一个从 2022年1月1日开始,到2022年12月31日结束的时间戳范围,每个星期日作为间隔。
默认的频率为 “D”,表示日期时间戳生成的步长为 1 天。
在Pandas中,也允许自定义时间戳的频率。比如要生成每个月的最后一天日期时间戳范围则可以如下操作:
import pandas as pd
# 生成每月最后一天的日期时间戳范围
date_range = pd.date_range(start='2022-01-01', end='2022-12-31', freq='M') + pd.tseries.offsets.MonthEnd(0)
print(date_range)
在这个例子中,我们首先指定了起始日期和终止日期,然后通过 “M” 参数指定了日期时间戳的频率为每月。生成时间戳范围后,我们在时间戳范围后面加上了 pd.tseries.offsets.MonthEnd(0) ,将当前每月最后一天日期换成该月的月末最后一天。
以上就是Pandas生成时间戳的范围的完整攻略,并且给出了相对应的实例说明。