zoukankan      html  css  js  c++  java
  • pandas之时间序列笔记

    时间戳tiimestamp:固定的时刻->pd.Timestamp

    固定时期period:比如2016年3月份,再如2015年销售额->pd.Period

    时间间隔interval:由起始时间和结束时间来表示,固定时期是时间间隔的一个特殊

    时间日期在Pandas里的作用:分析金融数据,如股票交易数据

     1 import pandas as pd
     2 import numpy as np
     3 
     4 # 处理时间需要用到的包
     5 from datetime import datetime
     6 from datetime import timedelta
     7 
     8 now = datetime.now()  # 输出当前的时间
     9 # 例如输出 datetime.datetime(2019, 8, 23, 17, 45, 13, 291738)
    10 now.year,now.month,now.day  # 输出年月日 (2019, 8, 23)
    11 
    12 data1 = datetime(2016, 4, 20)
    13 data2 = datetime(2016, 4, 16)
    14 delta = data1 - data2  # 输出datetime.timedelta(4)
    15 delta.days  # 输出4
    16 delta.total_seconds()  #输出间隔345600.0秒
    17 data2 + delta  # 返回某天的日期datetime.datetime(2016, 4, 20, 0, 0)
    18 data2 + timedelta(4.5)  #4.5天,它将输出datetime.datetime(2016, 4, 20, 12, 0)
    19 
    20 date = datetime(2016,3,20,8,30)
    21 str(date)  # 将date转换成字符串形式'2016-03-20 08:30:00'
    22 date.strftime("%Y/%m/%d %H:%M:%S")  # 格式化输出'2016/03/20 08:30:00'
    23 
    24 datetime.strptime('2016-03-20 09:30', '%Y-%m-%d %H:%M')
    25 # 去格式化输出datetime.datetime(2016, 3, 20, 9, 30)
    26 
    27 dates = [datetime(2016,3,1),datetime(2016,3,2),
    28              datetime(2016,3,3),datetime(2016,3,4)]
    29 s = pd.Series(np.random.randn(4),index=dates)  
    30 # 将时间变成索引以Series方式输出
    31 type(s.index)  # 它的返回值pandas.core.indexes.datetimes.DatetimeIndex
    32 type(s.index[0])  # 它的返回值pandas._libs.tslibs.timestamps.Timestamp
    33 
    34 pd.date_range('20160320','20160330')  # 输出时间列表,间隔频率默认为/D
    35 
    36 pd.date_range('20160320 16:32:38',periods=10,normalize=True)
    37 # 输出10天间隔频率默认为/D即每天,采用正则化normalize=True去掉16:32:38
    38 
    39 pd.date_range('20160320',periods=10, freq='M')
    40 # 输出每个月的月末时间,总共连续10个月,时间间隔频率是月
    41 # freq=BM(每个月最后一个工作日)、W以周为频率、4H以4小时为频率
    42 
    43 
    44 
    45 
    46 p = pd.Period(2010, freq='M')  # 以月份为时间段,输出Period('2010-01', 'M')
    47 p+2  # 就会输输出Period('2010-03', 'M')
    48 
    49 pd.period_range('2016-01',periods=10,freq='M')
    50 # 以月份为间隔频率输出连续10个月
    51 
    52 pd.period_range('2016Q1',periods=10,freq='Q')
    53 # 以季节为间隔频率输出连续的10个季节
    54 
    55 
    56 a = pd.Period(2016)  # 它的默认频段为年
    57 a.asfreq('M')  # 输出Period('2016-12', 'M') 以最后一个月为时期默认频段变为月
    58 a.asfreq('M',how='start')  # 时期变为1月 Period('2016-01', 'M')
    59 p = pd.Period('2016-04',freq='M')  # 自定义时期Period('2016-04', 'M')
    60 
    61 # 
    62 p.asfreq('A-DEC')  #频率转换为以年为单位12月结束 输出 Period('2016', 'A-DEC')
    63 p.asfreq('A-MAR')  #介入月份变为3月份时时间就到了2017年3月份
    64 
    65 p = pd.Period('2016Q4','Q-JAN')  # 以一月份结束的季度
    66 # 下一行可以知道2016Q4的起始时间与结束时间
    67 p.asfreq('M',how='start'), p.asfreq('M',how='end')
    68 
    69 # 获取该季度倒数第二个工作日下午4点20分
    70 (p.asfreq('B') - 1).asfreq('T') + 16 * 60 +20
  • 相关阅读:
    移动端的爬坑路
    判断设备ios或android以及判断是否是微信内置浏览器
    使用vue directive 写好的滑动删除功能
    不用ajax,使用json数据渲染商品的方法
    vue中使用swiper的一些坑
    vue的自定义指令的坑
    better-score获取滑动距离的坑
    linux命令
    关于打印
    数据可视化
  • 原文地址:https://www.cnblogs.com/yang901112/p/11426748.html
Copyright © 2011-2022 走看看