python pandas 日期格式_《利用Python进行数据分析》之pandas的时间序列基础

本文基于《利用Python进行数据分析》的第10章,介绍pandas库中时间序列的相关概念和用法,包括时间戳、固定时期、时间间隔等,并展示了如何进行日期和时间数据类型间的转换、TimeSeries的创建和切片操作。
摘要由CSDN通过智能技术生成

本章以《利用python进行数据分析》的第10章:时间序列 为基础,整理了pandas 库中时间序列相关用法。

时间序列数据的意义取决于具体的应用场景,主要有以下几种:

时间戳(timestamp)

固定时期(period)

时间间隔(interval)

实验或过程时间

pandas提供了一组标准的时间序列处理工具和算法,可以轻松的对时间序列进行切片、聚合,对定期/不定期的时间序列进行重采样等。

这些工具大部分对金融和经济数据尤为有用,同时也可以用来分析服务器和日志数据。

1.日期和时间数据类型及工具

python标准库包含用于日期(date)和时间(time)的数据类型,主要用到datetime、time、calendar等模块。

datetime模块

datetime模块中的数据类型

date :以公历形式存储日期 (年月日)

time :将时间存储为时、分、秒、毫秒

datetime :存储日期和时间

timedelta :表示两个datetime值之间的差 (日、秒、毫秒)

(1)datetime

.now()函数,返回一个当前时间的datetime类型

datetime类型 有 .year ,.month , .day等属性

import pandas as pd

from pandas import Series

from pandas import DataFrame

from datetime import datetime

now=datetime.now()

now.year,now.month,now.day

(2019, 3, 18)

(2)timedelta

timedelta表示两个datetime对象之间的时间差

有 .days , .seconds 等属性

delta = datetime(2019,3,18)-datetime(2019,1,1,8,15)

delta.days

delta.seconds

56700

可以给datetime对象加上(减去)一个或者多个timedelta,则产生一个新对象

from datetime import timedelta

start=datetime(2019,1,1)

start=start+timedelta(75)

start1=start-2*timedelta(75)

start

print (start)

print (start1)

2019-03-17 00:00:00

2018-10-18 00:00:00

(3)字符串和datetime的相互转换

datetime类型或者timestamp 类型 --> 字符串类型

str()函数

datetime的.strftime('%y-%m-%d')方法 ,其中格式化编码表格在P306

stamp=datetime(2019,1,1)

str1=str(stamp)

str2=stamp.strftime('%Y-%m-%d %H:%M:%S')

print (str1)

print (str2)

2019-01-01 00:00:00

2019-01-01 00:00:00

字符串类型 --> datetime类型或者timestamp 类型

datetime的.strptime方法

value='2019-01-01'

d1=datetime.strptime(value,'%Y-%m-%d')

print (d1)

2019-01-01 00:00:00

其中,是通过已知格式进行日期解析,但是编写格式定义比较麻烦

可以通过dateutil这个第三方包中parser.parse方法,可以对格式快速解析

from dateutil.parser import parse

parse('2011-01-01')

parse('6/12/2011',dayfirst=True)

datetime.datetime(2011, 12, 6, 0, 0)

pandas 通常是用于处理成组日期。

to_datetime方法可以解析多种不同的日期表示形式

datestrs=['7/6/2019','8/6/2019']

pd.to_datetime(datestrs)

DatetimeIndex(['2019-07-06', '2019-08-06'], dtype='datetime64[ns]', freq=None)

2.时间序列基础

pandas 最基本的时间序列类型就是以时间戳(python字符串 或datetime对象)为索引的Series

当创建一个带有DatatimeIndex的Series时,pandas就会创建一个TimeSeries

(1)TimeSeries的创建

import numpy as np

dates=[datetime(2019,1,1),datetime(2019,1,2),datetime(2019,1,3),datetime(2019,1,4)]

ts=Series(np.random.randn(4),index=dates)

ts

2019-01-01 -0.372832

2019-01-02 0.460571

2019-01-03 0.488445

2019-01-04 -0.208852

dtype: float64

(2)TimeSeries的索引、切片

TimeSeries是Series的一个子类,所以其索引切片都很类似

1.索引

ts.index[2]

Timestamp('2019-01-03 00:00:00')

ts[ts.index[2]]

ts[datetime(2019,1,2)]

0.4605713788911559

2.切片

可以传入字符串日期、datetime、timestamp

切片的是源数据的视图,与numpy的数组切片运算是一样的。

ts['2019-01-02':'2019-01-04']

2019-01-02 0.460571

2019-01-03 0.488445

2019-01-04 -0.208852

dtype: float64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值