zoukankan      html  css  js  c++  java
  • 【Python数据分析】pandas时期period

    1.pandas模块之period

    1.1 period创建时期

    import pandas as pd
    # pd.Period()创建时期
    
    p = pd.Period('2017', freq = 'M')
    print(p, type(p))
    # 生成一个以2017-01开始,月为频率的时间构造器
    # pd.Period()参数:一个时间戳 + freq 参数 → freq 用于指明该 period 的长度,时间戳则说明该 period 在时间轴上的位置
    
    print(p + 1)
    print(p - 2)
    print(pd.Period('2020', freq = 'A-DEC') - 1) # A-月 DEC-12月
    # 通过加减整数,将周期整体移动
    # 这里是按照 月、年 移动
    

    1.2 period_range创建时期范围

    import pandas as pd
    import numpy as np
    # pd.period_range()创建时期范围
    
    prng = pd.period_range('1/1/2011', '1/1/2012', freq='M')
    print(prng,type(prng))
    print(prng[0],type(prng[0]))
    # 数据格式为PeriodIndex,单个数值为Period
    
    ts = pd.Series(np.random.rand(len(prng)), index = prng)
    print(ts,type(ts))
    print(ts.index)
    # 时间序列
    
    # Period('2011', freq = 'A-DEC')可以看成多个时间期的时间段中的游标
    # Timestamp表示一个时间戳,是一个时间截面;Period是一个时期,是一个时间段!!但两者作为index时区别不大
    

    1.3 asfreq频率转换

    # asfreq:频率转换
    import pandas as pd
    import numpy as np
    p = pd.Period('2017','A-DEC')
    print(p)
    print(p.asfreq('M', how = 'start'))  # 也可写 how = 's'
    print(p.asfreq('D', how = 'end'))  # 也可写 how = 'e'
    # 通过.asfreq(freq, method=None, how=None)方法转换成别的频率
    
    prng = pd.period_range('2017','2018',freq = 'M')
    ts1 = pd.Series(np.random.rand(len(prng)), index = prng)
    ts2 = pd.Series(np.random.rand(len(prng)), index = prng.asfreq('D', how = 'start'))
    print(ts1.head(),len(ts1))
    print(ts2.head(),len(ts2))
    # asfreq也可以转换TIMESeries的index
    

    1.4 时间戳与日期之间转换

    import pandas as pd
    import numpy as np
    # 时间戳与时期之间的转换:pd.to_period()、pd.to_timestamp()
    
    rng = pd.date_range('2017/1/1', periods = 10, freq = 'M')
    prng = pd.period_range('2017','2018', freq = 'M')
    
    ts1 = pd.Series(np.random.rand(len(rng)), index = rng)
    print(ts1.head())
    print(ts1.to_period().head())
    # 每月最后一日,转化为每月
    
    ts2 = pd.Series(np.random.rand(len(prng)), index = prng)
    print(ts2.head())
    print(ts2.to_timestamp().head())
    # 每月,转化为每月第一天
    
  • 相关阅读:
    这样的程序员创业有戏
    一个29岁总裁对大学生的16条忠告
    向C#的String类添加按字节截取字符串的扩展方法
    妙用SQL Server聚合函数和子查询迭代求和
    为什么要在定义抽象类时使用abstract关键字
    C# 抽象类
    C# 虚函数和重载函数
    在指定文本里记录内容
    静态和非静态方法
    抽象类
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12284039.html
Copyright © 2011-2022 走看看