全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1396 1
2020-09-11
一、 date_range()函数

date_range()函数是pandas库的函数,顾名思义,该函数应该能生成指定区间的时间序列。 7.png


9.png

【注意】

这里的“MS”不能写成小写,写成小写即以毫秒为时间间隔,等价于freq='L'。结果为这样:

DatetimeIndex([       '2020-01-01 00:00:00', '2020-01-0100:00:00.001000',

               '2020-01-01 00:00:00.002000','2020-01-01 00:00:00.003000',

               '2020-01-01 00:00:00.004000','2020-01-01 00:00:00.005000',

               '2020-01-01 00:00:00.006000'],

             dtype='datetime64[ns]', freq='L')

1、 按月使用“开始时间”和“期数”生成2020-01-31至2020-12-31的,每2个月为一个间隔的日期

【脚本】

print(pd.date_range('20200101', periods=6, freq='2M'))

【结果】

runfile('C:/Users/ZWY/PycharmProjects/firstPro/test.py',wdir='C:/Users/ZWY/PycharmProjects/firstPro')

DatetimeIndex(['2020-01-31','2020-03-31', '2020-05-31', '2020-07-31',

               '2020-09-30', '2020-11-30'],

             dtype='datetime64[ns]', freq='2M')

2、 按1.5小时为间隔取数

【脚本】

print(pd.date_range('20200101', periods=6, freq='1h30min'))

【结果】

DatetimeIndex(['2020-01-01 00:00:00','2020-01-01 01:30:00',

               '2020-01-01 03:00:00','2020-01-01 04:30:00',

               '2020-01-01 06:00:00','2020-01-01 07:30:00'],

              dtype='datetime64[ns]',freq='90T')

【注意】

这里的'1h30min'中间没有冒号,等价于freq='90T '。结果为这样:

试错:print(pd.date_range('202001', periods=7, freq='M'))

3、 怎样得到时间间隔为一个月的月份,而当是日期?

使用print(pd.date_range('2020-01', periods=6, freq='M'))可以吗?不可以!解决方案:按个函数pd.period_range

一、 period_range()函数

1、 得到时间间隔为一个月的6期月份

【脚本】

print(pd.period_range('2020-01', '2020-06',  freq='M'))

【结果】

PeriodIndex(['2020-01', '2020-02','2020-03', '2020-04', '2020-05', '2020-06'], dtype='period[M]', freq='M')

【注意】

1、这里的数据类型变了,变成了PeriodIndex,可以大胆地想一下,这个以时间段为范围的序列,是否可以使用以“年”、‘季度“为间隔的时间序列呢?也可以的!

二、 PeriodIndex()函数

该函数会生成一些指定的不规则的时间段序列,注意函数字母的大小写。

如:values = ['202001', '202003', '202002', '202008']
print(pd.PeriodIndex(values,  freq='M'))

1、 生成一个间隔不均匀地季度时间序列

【脚本】

values = ['2020Q1', '2020Q3', '2020Q2', '2019Q3']
print(pd.PeriodIndex(values,  freq='Q'))

【结果】

PeriodIndex(['2020Q1', '2020Q3', '2020Q2', '2019Q3'],dtype='period[Q-DEC]', freq='Q-DEC')

2、 转换类:把一组月份转换成对应的季度

【脚本】

values = ['2020-01', '2020-03', '2020-04', '2019-05', '2020-08', '2020-12']
   print(pd.PeriodIndex(values,  freq='Q'))

【结果】

PeriodIndex(['2020Q1', '2020Q1', '2020Q2', '2019Q2','2020Q3', '2020Q4'], dtype='period[Q-DEC]', freq='Q-DEC')

【注意】

这里注意,values不能再设置为‘202001‘格式,而需要设置为‘2020-01’

3、 指定年月的时间序列

【脚本】

year = ['2020', '2019', '2020']
month = ['01', '2', '3']
print(pd.PeriodIndex(year,month,  freq='M'))

【结果】

PeriodIndex(['2020-01', '2019-01', '2020-01'],dtype='period[M]', freq='M')

三、 总结

date_range(),period_range()函数生成序列时,都有两种方法,一是(start, end,periods);一是(start, periods,freq)。而PeriodIndex()函数生成时间序列时稍显灵活,可以通过指定时间值,指定freq方法来生成。

关于freq,在不同函数中意义不同,我找到的资料如下:

(下图来源https://blog.csdn.net/lys_828/article/details/104649078)

8.png


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-9-12 20:18:05
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群