pandas 处理日期时间变量

创建Timestamp类和Period类

Timestamp对象

import pandas as pd
from datetime import datetime

print(datetime(2019,10,21))
print(pd.Timestamp(datetime(2019,10,21)))
print(pd.Timestamp(datetime(2019,10,21,1,2,3)))
print(pd.Timestamp('2012-09-09 1:3:3'))
print(pd.Timestamp(2012,4,4))

转换为Timestamp对象

df1 = pd.read_csv('Beijing_2008.csv',header=2)
print(pd.Timestamp(df1['Date (LST)'][0]))
print(df1['Date (LST)'].apply(pd.Timestamp))

利用to_datetime进行批量转换

‘’’
pd.to_datetime(
arg,errors,dayfirst =‘False’,yeatfirst = ‘False’,box,format
)
‘’’

print(pd.to_datetime(datetime(2019,10,21,1,2,3)))
print(pd.to_datetime('2019-10-21 1:2:3'))
print(pd.to_datetime(['2015/2/2','2010.3.3']))
print(pd.to_datetime(df1['Date (LST)'],format = '%Y-%m-%d %H:%M'))

多列数据合成Timestamp类

print(pd.to_datetime(df1[['Year','Month','Day','Hour']]))

DatetimeIndex类

创建DatetimeIndex对象

创建索引时自动转换

bj08_datetimeindex = df1.set_index(pd.to_datetime(df1['Date (LST)']))
print(bj08_datetimeindex)

使用date_range创建DatetimeIndex(主要和reindex配合使用以快速完成对时间序列中缺失值的填充)

print(pd.date_range('2019/1/1',periods=12,freq = '2M'))
print(bj08_datetimeindex['2008-11'])
print(bj08_datetimeindex['2008-11-1':'2008-11-6 9:00:00'])

对时间做分组汇总

序列的分组汇总

直接取出索引的相应层级

print(bj08_datetimeindex.index.hour)
print(bj08_datetimeindex.index.quarter)
print(bj08_datetimeindex.index.week)

直接利用groupby方法进行汇总

print(bj08_datetimeindex.groupby(bj08_datetimeindex.index.month).Value.max())

使用更强大的resample函数

print(bj08_datetimeindex.resample('3D').mean())

序列的缺失值处理

‘’’
时间序列要求记录的时间点连贯无缺失 ,因此需要:
首先建立针对整个时间范围的完整序列框架
随后针对无数据的时间点进行缺失值处理、
df.reindex()是完成该任务的强有力工具
‘’’

bjpm09 = pd.read_csv('Beijing_2009.csv',encoding='utf-8',header = 0)
bjpm09idx = bjpm09.set_index(pd.to_datetime(bjpm09['Date (LST)']))
bjpm09idx = bjpm09idx[bjpm09idx['Value'] > 0]
print(bjpm09idx)
idx = pd.date_range(start = '2009-02-01 00:00',
                    end = '2009-12-31 23:00',freq = 'H')
print(idx)

bj09new = bjpm09idx[~bjpm09idx.index.duplicated()].reindex(idx,method = 'bfill')

print(bj09new)

序列数值平移

print(bj09new.shift(3))

你可能感兴趣的:(数据分析&文本挖掘,pandas,日期,时间,处理)