时间:2021-05-22
时间序列的类型:
时间戳:具体的时刻
固定的时间区间:例如2007年的1月或整个2010年
时间间隔:由开始时间和结束时间表示,时间区间可以被认为是间隔的特殊情况
实验时间和消耗时间:每个时间是相对于特定开始时间的时间的量度,(例如自从被放置在烤箱中每秒烘烤的饼干的直径)
日期和时间数据的类型及工具
datetime模块中的类型:
date 使用公历日历存储日历日期(年,月,日) time 将时间存储为小时,分钟,秒,微秒datetime 存储日期和时间timedelta 表示两个datetime值之间的差(如日,秒,微秒)tzinfo 用于存储时区信息的基本类型from datetime import datetimenow = datetime.now()now.year #当时年份now.month #当前月份now.day #当前天now.time() #当前时间datetime.time(12, 27, 41, 303676) 两个时间戳运算得到一个timedelta(时间差)类型日期时间差 timedelta类型
from datetime import timedeltastart = datetime(2019,2,5)start + timedelta(20) #默认为天datetime.datetime(2019, 2, 25, 0, 0)字符串和datetime互相转换
date.strptime方法将字符串转换为时间
values = '2019-8-9'datetime.strptime(values,'%Y-%m-%d') #是在已知格式的前提下转换日期的好方式datetime.datetime(2019, 8, 9, 0, 0)datestrs = ['2019-8-7','2019-8-9'][datetime.strptime(values,'%Y-%m-%d') for values in datestrs][datetime.datetime(2019, 8, 7, 0, 0), datetime.datetime(2019, 8, 9, 0, 0)]更为通用的日期转换格式
from dateutil.parser import parseparse(values)datetime.datetime(2019, 8, 9, 0, 0)parse('8,5,2018',dayfirst=True) #dayfirst参数 第一个元素是天datetime.datetime(2018, 5, 8, 0, 0)pd.to_datetime() 用于轴索引或DataFrame的列
pd.to_datetime(datestrs)
DatetimeIndex(['2019-08-07', '2019-08-09'], dtype='datetime64[ns]', freq=None)
更为简单的转换
datetime(2019,1,1)
datetime.datetime(2019, 1, 1, 0, 0)
时间序列的算术运算(在日期上自动对齐)
index = pd.date_range('3/3/2018',periods=20)ts = pd.Series(np.random.randn(20),index=index)ts2018-03-03 0.6115912018-03-04 0.1191682018-03-05 0.5143902018-03-06 1.0106002018-03-07 0.1817632018-03-08 -0.2909642018-03-09 0.2529272018-03-10 -1.6456922018-03-11 -0.5000142018-03-12 -1.247355ts1 = ts[::2]2018-03-03 0.6115912018-03-05 0.5143902018-03-07 0.1817632018-03-09 0.2529272018-03-11 -0.5000142018-03-13 -0.1223072018-03-15 0.3612372018-03-17 -1.8948532018-03-19 -1.6089892018-03-21 1.274982Freq: 2D, dtype: float64ts + ts12018-03-03 1.2231832018-03-04 NaN2018-03-05 1.0287812018-03-06 NaN2018-03-07 0.3635262018-03-08 NaN2018-03-09 0.5058532018-03-10 NaN2018-03-11 -1.0000282018-03-12 NaN2018-03-13 -0.2446132018-03-14 NaN2018-03-15 0.7224732018-03-16 NaN2018-03-17 -3.7897072018-03-18 NaN2018-03-19 -3.2179792018-03-20 NaN2018-03-21 2.5499632018-03-22 NaNts.index.dtype #数据;类型在纳秒级的分辨率下存储时间戳dtype('<M8[ns]')ts.index[0] #datetimeindex中的标量值是一个时间戳(timestamp)Timestamp('2018-03-03 00:00:00', freq='D')时间序列的索引,选择,子集
时间序列的索引
ts = pd.Series(np.random.randn(1000),index = pd.date_range('1/1/2016',periods=1000))s['2018-6'] #时间序列的索引 也可用ts.loc[]2018-06-01 1.3718432018-06-02 -0.3560412018-06-03 0.1114522018-06-04 0.3252222018-06-05 -0.8631382018-06-06 -0.1159092018-06-07 0.0628942018-06-08 0.223712时间序列的切片
ts['2018-9-23':] #时间序列的切片2018-09-23 0.0055192018-09-24 -1.3740382018-09-25 1.7691122018-09-26 -0.000306Freq: D, dtype: float64ts.truncate(before='2018-9-24') #使用truncate方法向后切片2018-09-24 -1.3740382018-09-25 1.7691122018-09-26 -0.000306Freq: D, dtype: float64ts.truncate(after='2016-1-4') #向前切片2016-01-01 -1.7763342016-01-02 -0.4885502016-01-03 -1.2998892016-01-04 -1.883413Freq: D, dtype: float64含有重复索引的时间序列的分组处理
index = pd.DatetimeIndex(['1/1/2017','1/1/2017','1/2/2017','1/3/2017'])dup_ta = pd.Series(np.arange(4),index=index)dup_ta2017-01-01 02017-01-01 12017-01-02 22017-01-03 3dtype: int32dup_ta.groupby(level=0).mean()以上这篇Pandas时间序列基础详解(转换,索引,切片)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一开始自学Python的numpy、pandas时候,索引和切片把我都给弄晕了,特别是numpy的切片索引、布尔索引和花式索引,简直就是大乱斗。但是最近由于版本
Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。方法的格式是:DataFram
详解Python序列化Serialize和反序列化Deserialize序列化(serialization)序列化是将对象状态转换为可保持或传输的格式的过程。与
NumPy比一般的Python序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。整数数组索引以下实例获取数
在最新版的pandas中(不知道之前的版本有没有这个问题),当我们对具有多层次索引的对象做切片或者通过df[bool_list]的方式索引的时候,得到的新的对象