Python时间序列处理:时间索引(datetimeindex)转化和使用方法

时间索引格式转化

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

你可能感兴趣的:(Python)