数据科学入门与实战:玩转pandas之六时间序列

时间序列的操作基础

首先引入相关的包

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from datetime import datetime

创建一个时间对象

t1 = datetime(2009,10,20,0,0)
print(t1)

在这里插入图片描述
创建多个时间对象

date_list = [
        datetime(2016,9,1),
        datetime(2017,9,2),
        datetime(2016,9,3),
        datetime(2017,9,4),
        datetime(2016,10,5),
]
print(date_list)

打印结果

[datetime.datetime(2016, 9, 1, 0, 0), datetime.datetime(2017, 9, 2, 0, 0), datetime.datetime(2016, 9, 3, 0, 0), datetime.datetime(2017, 9, 4, 0, 0), datetime.datetime(2016, 10, 5, 0, 0)]
2016-09-01    0.257473

创建一个以date_list为index的Serious并且查看他的相关信息

s1 = Series(np.random.rand(5),index=date_list)
print(s1)
print(type(s1))
print(s1.index)
print(s1.values)
print(s1[1])

在这里插入图片描述
也可以通过data查看

print(s1[datetime(2016,9,1)])
print(s1['2016-9-1'])
print(s1['2016-9'])
print('-'*100)
print(s1['2017'])

在这里插入图片描述
如果我想产生这样一个index:连续的日期。

date_list_new = pd.date_range('2016-01-01',periods=100)

在这里插入图片描述
可以加一个freq参数,让时间间隔显示

date_list_new = pd.date_range('2016-01-01',periods=100,freq='5H')

在这里插入图片描述
建立一个以date_list_new为索引的s2

s2 = Series(np.random.rand(100),index=date_list_new)
print(s2)

在这里插入图片描述

时间序列数据的采样和画图

首先引入相关包

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

创建一下date_list_new

#创建一下date_list_new
t_range = pd.date_range('2016-01-01','2016-12-31')
print(t_range)
print(len(t_range))

在这里插入图片描述
创建s1,index为t_range

s1 = Series(np.random.randn(len(t_range)),index = t_range)
print(s1)

在这里插入图片描述
笨办法…

#对它进行采样
print(s1['2016-01'])#获取到一月份的数据
print(s1['2016-01'].mean())
#算12次 就实现采样的功能 然而有更好的

函数采样
按月采样

s1_month = s1.resample('M').mean()
print(s1_month)
print(s1_month.index)

在这里插入图片描述
一天采集24个点

#一天采集24个点,提高采样率
#填充方式
print(s1.resample('H').ffill())

另一种填充方式

#另一种填充方式
print(s1.resample('H').bfill())

画时序图

#画时序图
import matplotlib.pyplot as plt
t_range = pd.date_range('2016-01-01','2016-12-31',freq='H')
print(t_range)
#股票
stock_df = DataFrame(index=t_range)
stock_df['BABA'] = np.random.randint(80,160,size = len(t_range))
#print(stock_df)
print(stock_df.head())
stock_df['TENCENT'] = np.random.randint(80,160,size = len(t_range))

stock_df.plot()
plt.show()

在这里插入图片描述
采样率高的没法看
采样一下
计算一下每周的均值然后绘图

weekly_df = DataFrame()

然后周平均,并绘图

weekly_df = DataFrame()
weekly_df['BABA'] = stock_df['BABA'].resample('W').mean()
weekly_df['TENCENT'] = stock_df['TENCENT'].resample('W').mean()
print(weekly_df.head())
weekly_df.plot()

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值