时间序列基础教程总结!

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:小雨姑娘,康涅狄格大学,Datawahle成员

最近在Kaggle发现了一个关于时间序列比较不错的kernal,决定翻译一下搬运过来,大家一起学习交流一下。如果预期不错的话准备写四章,分别是时间序列Python基本操作统计分析时间序列分解与随机游走统计建模分析

0 数据集

本教程包括两个数据集(后台回复“210321”可获取):

Google Stocks Data:提供了长达十三年的股票数据。时间粒度精确到天,提供了每个股票每天的最高价,最低价格以及开盘价格等信息。

Humidity in different world cities:提供了世界各地各个城市的大气湿度信息,时间粒度为分钟。

1. 基本操作(一)

1.1 读取数据

在使用pd.read_csv读取时间序列时,可以设置两个参数。使用parse_dates参数可以把指定的列从文本类型转化为Pandas内置时间类型,使用index_col可以把指定的列转化为数据集的索引。

google = pd.read_csv('../input/stock-time-series-20050101-to-20171231/GOOGL_2006-01-01_to_2018-01-01.csv',
index_col='Date', parse_dates=['Date'])
google.head()

另一个数据集也可以以同样的方法读入

1.2 数据预处理

股票数据并不存在缺失值,但是天气湿度数据却存在缺失值。使用参数为ffill的fillna()函数,用后一时刻的观测值进行填补。

humidity = humidity.iloc[1:]
humidity = humidity.fillna(method='ffill')
humidity.head()

1.3 数据可视化

使用pandas Series对象的asfreq[2]函数对时间序列数据以指定频率作图。其中M代表以月为基本单位。默认是使用时间窗的结尾作为结果,例如2019年12月这个月的结果实际是12月31号的数据。

humidity["Kansas City"].asfreq('M').plot() 
plt.title('Humidity in Kansas City over time(Monthly frequency)')
plt.show()

google['2008':'2010'].plot(subplots=True, figsize=(10,12))
plt.title('Google stock attributes from 2008 to 2010')
plt.savefig('stocks.png')
plt.show()

1.4 时间戳与时间窗

时间戳(Timestamps)用来表示某个时间点,时间窗(Periods)用来表示某个时间区间。时间窗常常用来检测在某个时间段内是否发生了特殊事件。时间戳与时间窗之间也可以相互进行转换。

创建时间戳:

timestamp = pd.Timestamp(2017, 1, 1, 12)
timestamp

创建时间窗:

period = pd.Period('2017-01-01')
period

检测时间戳是否在特定时间窗内

period.start_time < timestamp < period.end_time

将时间戳转换为时间窗

new_period = timestamp.to_period(freq='H')

将时间窗转换为时间戳

new_timestamp = period.to_timestamp(freq='H', how='start')

1.5 使用date_range方法

date_range 是一个可以返回多个datetime对象组成的序列的方法。它经常被用于创建连续的时间序列(用法非常简单,不要再用for循环创建时间序列了!!)

dr1 = pd.date_range(start='1/1/18', end='1/9/18')

也可以指定频率

dr2 = pd.date_range(start='1/1/18', end='1/1/19', freq='M')

1.6 Datetime对象

pandas.to_datetime() [3]用来将参数转化为datetime对象。具体使用方法可以看官方文档

df = pd.DataFrame({'year': [2015, 2016], 'month': [2, 3], 'day': [4, 5]})

df = pd.to_datetime(df)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值