pandas时间序列

1.datetime 模块操作时间
    strptime = datetime.strptime('2020-01-01', '%Y-%m-%d')
    print(strptime, type(strptime)) # 2020-01-01 00:00:00 <class 'datetime.datetime'>

如果时间变成了 2020/01/01,这时后面的格式得手动改成 %Y/%m/%d

2.dateutil 操作时间
    parse = dateutil.parser.parse('2020-01-01')
    # parse = dateutil.parser.parse('01/02/2020')
    # parse = dateutil.parser.parse('Feb/02/2020')
    print(parse, type(parse))

用这个模块处理时间,就无需自己去写时间的格式了,引入 pandas 模块后,这个模块会同时被引用进来,因为 pandas 也会用到这个库。

3.创建时间类型索引
    # 方法一
    datetime = pd.to_datetime(['2020-01-01', '2020-01-02', '2020-01-03'])
    print(datetime)  # DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03'], dtype='datetime64[ns]', freq=None)

    # 方法二
    date_range = pd.date_range(start='1/1/2018', end='1/08/2018')
    date_range = pd.date_range(start='1/1/2018', end='1/08/2018', freq='H')  # 默认按天,设置频率按小时
    # 还可以设置为 D(天),M(月),3M(3个月)

    date_range = pd.date_range(start='1/1/2018', periods=3)  # 默认按天,从start开始往后3天,如果设置end,则是往前3天

    # freq:时间频率,默认为D,可选 H小时,W周,B工作日,SM半月,T分钟,S秒,A年
    date_range = pd.date_range(start='2018-01-01', periods=20, freq='W')  # 按周输出,默认输出每个周日,W-SUN,如果想按周一输出,freq='W-MON'
    date_range = pd.date_range(start='2018-01-01', periods=20, freq='B')  # 按周输出,只输出工作日,business

    print(date_range)
    # 转成 python 的 datetime
    print(type(date_range[0]), type(date_range[0].to_pydatetime()))  # <class 'pandas._libs.tslibs.timestamps.Timestamp'> <class 'datetime.datetime'>
4.pandas时间序列用法

时间序列就是以时间对象为索引的Series或DataFrame,类型为 DatetimeIndex。
时间序列有什么用处:

  • 可传入年或年月作为切片方式
  • 可传入日期范围作为切片方式
  • 丰富的函数支持,resample(),truncate()
切片
sr = pd.Series(np.arange(1000), index = pd.date_range('2017-01-01', periods = 1000))
sr['2017'] # 所有2017年的
sr['2017':'2018-03'] 
sr['2017-12-25':'2018-02-01']
resample
sr.resample('M').sum()  # 按月来分组,并计算每月数据的和
truncate
sr.truncate(before='2018-01-03')  # 只留下2018-01-03之后的数据

因为有切片了,所以这个函数意义不大,如果想留下两边的,去掉中间的,切片要切两次,用这个函数可以只执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值