pandas rolling_python日期处理(pandas)

d613bcdf3c5fa864e022f2d83b6050d4.png

python日期处理(pandas)

python有内置的日期处理模块,datetime,但是这里主要介绍pandas的日期处理功能

1. pandas中的日期基本数据类型

  • Timestamp 单个日期
    • 通过 pd.to_datetime() 将字符串格式的日期,变成Timestamp类型
  • DatetimeIndex 多个独立的日期组合起来
  • PeriodIndex 指定了间隔频率的DatetimeIndex
    • 通过将DatetimeIndex.to_period("D"),指定间隔频率来得到
  • TimedeltaIndex 针对时间增量或者持续时间
    • 当用一个日期减去另一个日期,放回结果就是上述类型

2. 有规律的时间序列

  • pd.date_range()
    • 指定一个时间区段,频率、自动生成这个区间
    • pd.date_range('2019-12-8', periods=4)
      pd.date_range('2019-12-8', '2019-12-12')
      pd.date_range('2019-12-8', periods=4, freq='H')
    • 创建生成的对象为 DatetimeIndex类型
  • pd.period_range()
    • 使用上述类似的方法,生成区间
    • 创建生成的对象为 PeriodIndex类型
  • pd.timedelta_range()
    • 使用上述类似的方法,生成区间
    • 创建生成的对象为 TimedeltaIndex 类型

3. 日期处理实例

用到的数据获取链接:

https://github.com/tangg9646/file_share

写好的jupyter notebook文件也在此仓库

import numpy as np
import pandas as pd

data = pd.read_csv("Fremont_Bridge_Bicycle_Counter.csv", index_col="Date", parse_dates=True)
data.head()

33c131b8e7a56ac39d834ae0f5ef0af1.png

data.columns = ['Total','West', 'East']

data.head()

49ee38698aa56c76b92bb74c06d4818b.png

data.dropna().describe()

69dd27310492150a82fb0bc8d625d8a6.png

3.1 数据可视化

%matplotlib inline
import seaborn
seaborn.set()

import matplotlib.pyplot as plt
data.plot()
plt.ylabel("Hourly Bicycle Count")

ceadf36e4aa98f40344fbeeb2eaeb98a.png

3.2 增大时间粒度

上述时间粒度太细,看不出趋势,重新取样成较大的时间粒度

resample

按周累计上述数据,重新绘图

weekly = data.resample("W").sum()
weekly.plot(style=[':','--','-'])
plt.ylabel("Weekly bicycle count")

56979f0bab6db86a0fcd09b22271c078.png

数据累计平均

另一种对数据进行累计的简便方法

计算30天的移动平均值

daily = data.resample("D").sum()

daily.rolling(30, center=True).mean().plot(style=[':','--','-'])
plt.ylabel("mean of 30 days count")

c00e4ae5741d26f26c12e82c955f9a6f.png

移动平均

使用移动平均 来平滑曲线

高斯分布时间窗口

窗口宽度=50天 窗口内高斯平滑宽度=10天

daily.rolling(50, center=True,
win_type="gaussian").sum(std=10).plot(style=[':','--','-'])

da09ae0fcf4a7db69ec2d24b1e718b2b.png

3.3 后续

后续代码不再展示,查看《python数据科学手册》P182 后面还对

  • 每小时的自行车流量
  • 每周每天的自行车流量
  • 工作日,双休日每小时的自行车流量

做了分析,主要用到了数据透视 groupby 操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值