时间序列
1.生成一段时间范围
pd.date_range(start=None, end=None, periods=None, freq=‘D’)
输入start与end以及freq 生成start到end,频率为freq的时间
也可使用period生成时间段
import pandas as pd
pd.date_range(start='20200101',end='20201031',freq='M')
pd.date_range(start='20200101',period=10)
2.使用美国911报警数据各个时间段的数据可视化
①读取数据,将字符串转化为时间序列并设置为index
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.read_csv('911.csv',sep=',')
import datetime
df['timeStamp']=pd.to_datetime(df['timeStamp']) #将字符串转化为时间序列
df.set_index('timeStamp',inplace=True) #设置为index
#拆分报案原因,并作dummy处理
df['kind']=df['title'].map(lambda x:x.split(':')[0])
df=pd.concat([df,pd.get_dummies(df['kind'])],axis=1)
df.head(2)
2.统计出911数据中不同月份电话次数的变化情况
#首先对时间序列进行重采样处理
count_month=df.resample('M').count()['kind']
_x=count_month.index
_x=[i.strftime('%Y%m%d') for i in _x] #strftime 简化时间格式
_y=count_month.values
plt.figure(figsize=(16,10))
plt.plot(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x,rotation=45) #设置x轴的刻度
3.统计出911数据中不同月份不同类型的电话的次数的变化情况
#不同类型
df1=df.loc[df['EMS']==1]
df2=df.loc[df['Fire']==1]
df3=df.loc[df['Traffic']==1]
#生成每月的数据
count_month_ems=df1.resample('M').count()['EMS']
count_month_fire=df2.resample('M').count()['Fire']
count_month_tra=df3.resample('M').count()['Traffic']
#去掉时间中的时分秒
_x1=count_month_ems.index
_x1=[i.strftime('%Y%m%d') for i in _x1]
_y1=count_month_ems.values
_x2=count_month_fire.index
_x2=[i.strftime('%Y%m%d') for i in _x2]
_y2=count_month_fire
_x3=count_month_tra.index
_x3=[i.strftime('%Y%m%d') for i in _x3]
_y3=count_month_tra.values
#绘制三种不同类型的折线图
plt.figure(figsize=(10,6))
plt.plot(range(len(_x1)),_y1,color='g',label='EMS')
plt.plot(range(len(_x2)),_y2,color='r',label='Fire')
plt.plot(range(len(_x3)),_y3,color='b',label='Traffic')
plt.legend()
plt.xticks(range(0,len(_x1),3),_x1,rotation=45)
#最後の一言
时间序列用于将多个时间段的数据变化情况呈现出来,日常应用广泛,如股票变化情况等。时间序列模型的应用场景也比较丰富。