Python时间序列处理:时间索引(datetimeindex)转化和使用方法
记录了在python如何将时间序列中的时间信息转换成时间索引,以及时间索引的使用技巧,比如提取指定时间点/时间段的数据信息。
·
时间索引格式转化
1) 数据导入和处理
数据介绍: 这里使用了航空乘客数据集,数据里包含了月份以及每月的乘客数量。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib.pylab import rcParams
rcParams['figure.figsize']=15,6
#数据导入和查看
data=pd.read_csv('Airpassengers.csv')
print(data.head())
print('\nData Types:')
print(data.dtypes)
2)数据格式转换
方法一:使用timestamp
train.timestamp=pd.to_datetime(train.Month,format='%Y-%m')
train.index=train.timestamp
train.drop('Month',axis=1,inplace=True )
train.head()
方法二:使用dateparse
#格式转换
dateparse=lambda dates: pd.datetime.strptime(dates,'%Y-%m')
data=pd.read_csv('Airpassengers.csv',parse_dates=['Month'],index_col='Month',date_parser=dateparse)
data.head()
# parse_dates:指定包含日期时间信息的列。例子里的列名是'Month‘
# index_col:在TS数据中使用pandas的关键是索引必须是日期等时间变量。所以这个参数告诉pandas使用'Month'列作为索引
# date_parser:它指定了一个将输入字符串转换为datetime可变的函数。pandas 默认读取格式为'YYYY-MM-DD HH:MM:SS'的数据。如果这里的时间格式不一样,就要重新定义时间格式,dataparse函数可以用于此目的。
#查看数据的索引
data.index
注意:dtype='datetime64[ns] 就可以确定是时间对象。这样将数据格式转换成Series object 就可以避免每次使用时都要提到列名。
* 时间索引使用技巧
1)提取指定时间点的数据
#1.Specific the index as string constant:
ts['1949-01-01']
# 2. 导入并使用‘datatime’
from datetime import datetime
ts[datetime(1949,1,1)]
2)提取指定时间段的数据
#和使用索引方法一样
# 1. 制定时间区间
ts['1949-01-01':'1949-05-01']
# 2. 使用冒号‘:’ :
ts[:'1949-05-01']
# 3. 取一年的数据
ts['1949']
# 4.取一个月的数据
ts['1949-May'] #可以用MAY
注意:
- 在数字索引中【:5】只会提取位置5之前的所有数据,即01234,不包括5, 但是在时间序列中时包括的
- 必须按范围进行排序才能起作用。如果索引值是乱序,它不会工作。
* 时间索引乱序解决方法
ts = ts.sort_values(by = 'Month') #根据时间先后将数据重新排序,并替换原始ts
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)